has_many :attachments
というモデルNewsItem
があります。新しい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
)によって処理されなければなりません。
私がここで間違っていることに関するアイデアはありますか?
更新:
accepts_nested_attributes_for
の:reject_if
-parameterは私が必要なものはかなりあるように思えます。残念ながら、無効なレコードを暗黙的に "無視"することしかできません。私は、2つのフィールドのいずれかが空白の場合、エラーメッセージを受け取るようにします。何か案は?
問題は、私はこの問題を単純に答えました。この全体が多相関係であり、Attachableインターフェイスを経由しています:「Attachment belongs_to:attachable、:polymorphic => true」と「news_item has_many:attachments、 =>:attachable、:dependent =>:destroy' – DeX3
rails docsが言っていることは、inverse_ofは多態的な関連付け、他のアイデアでは機能しないとわかりましたか? – DeX3
申し訳ありませんが、私はしていません。ところで、あなたは 'polymorphic'を使っている情報で質問を更新するべきです。 –