nested_attributes を実装しようとしていますが、スケジュールの作成が機能しています。しかし、エラーを出さずに編集すると失敗します。1 対 1 の関係では機能しますが、 1 対多では機能しません。このドキュメントに記載されているように、スケジュールの ID を渡しています: NestedAttributes
私はこれらのモデルを持っています:
class Article < ActiveRecord::Base
has_many :schedules
accepts_nested_attributes_for :schedules
end
class Schedule < ActiveRecord::Base
belongs_to :article
end
強力なパラメーターをホワイトリストに登録するためのコントローラーのスニペットを次に示します。
def article_params
params.require(:article).permit(schedules_attributes: [ :id, :schedule_for, :content, :time_zone, :date, :time ])
end
そして、ここに私がレールコンソールで試したサンプルがあります:
article_params = {"schedules_attributes"=>{"0"=>{"schedule_for"=>"pre", "content"=>"This is a scheduled message for ETS - !!!!!!!", "time_zone"=>"American Samoa", "date"=>"2013-10-20", "time"=>"11:15 AM", "id"=>"1"}}}
article = Article.find(1)
article.update(article_params)
D, [2013-10-25T16:42:50.266517 #2296] DEBUG -- : (0.1ms) BEGIN
D, [2013-10-25T16:42:50.267789 #2296] DEBUG -- : Schedule Load (0.3ms) SELECT "schedules".* FROM "schedules" WHERE "schedules"."article_id" = $1 AND "schedules"."id" IN (1) [["article_id", 1]]
D, [2013-10-25T16:42:50.273288 #2296] DEBUG -- : (0.3ms) COMMIT
正しいスケジュールを選択しましたが、更新クエリを実行せず、エラーもありませんでした。ここで何か不足していますか?
編集:
Ruby 2.0 と Rails 4 を使用しています。