カテゴリー:
Rails
タグ:
 accepts_nested_attributes_for validation

このエントリーをはてなブックマークに追加
更新日時:
2013年09月24日(火)
作成日時:
2013年09月24日(火)

前の記事 / 次の記事

タイトルの通りだけど、

class Article < ActiveRecord::Base
  has_one :background_image
  accepts_nested_attributes_for :background_image
end

とかして、

-# haml
- @article = Article.first
=form_for @article do |f|
  =f.fields_for :background_image do |f|
    =f.label :name
    =f.text_field :name

とかやると、自動的に

<input id="article_background_image_attributes_id" name="article[background_image_attributes][id]" \
 type="hidden" value="1" />

っていうのが挿入される。

これがなんかキモイなと思って、
この値を他のidに付け替えたらどうなるのかと思ってやってみたところ、

元々持っているidとは違うidを渡そうとした場合、

ActiveRecord::RecordNotFound

になることが分かった。

あと、自動的に id を持つ input が挿入されてRailsがその値を使うので、
StrongParameters ではその id を許可しておかなければいけない。