我有一个模型NewsItem
即has_many :attachments
。在新的NewsItem窗体中,用户可以使用嵌套窗体创建项目的附件。Ruby on Rails:无效的嵌套记录得到保存
一个Attachment
由一个title
和一个file
(它被上传)组成。该模型对这两个域的存在进行验证。但是,如果我将新附件的字段保留为空,并点击提交按钮,我会得到正确的错误消息(“标题不能为空”等等),但附件仍然保持不变尽管如此,仍然可以用两个(无效)值保存。
唯一相关的代码,我可以想出是我在NewsItemController
的create
方法调用@news.save
部分:
respond_to do |format|
if @news.save
flash[:success] = t('news.flash.created')
format.html { redirect_to news_index_path }
else
format.html { render :action => "new" }
end
end
一切应以轨道(新闻accepts_nested_attributes_for :attachments, :allow_destroy => true
)进行处理。
任何想法,我在做什么错在这里?
更新:
这似乎是:reject_if
-parameter的accepts_nested_attributes_for
几乎是我所需要的。不幸的是,你只能默默地“忽略”无效记录。如果两个字段中的任何一个都为空,我希望用户收到错误消息。有任何想法吗?
问题是,我简单地回答了这个问题:整个事情是一个多态关系,并通过一个可连接接口:'Attachment belongs_to:attachable,:polymorphic => true'和'news_item has_many:attachments: as =>:可附加的,:dependent =>:destroy' – DeX3
刚发现rails文档中说:inverse_of不适用于多态关联,还有其他想法? – DeX3
对不起,我没有。顺便说一句,你应该使用'polymorphic'来更新你的问题。 –