我有一個模型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'來更新你的問題。 –