悪徳商法?マニアックス ココログ支店

悪徳商法総合情報紹介ページ ~騙すなら、素敵にだまして~  本家「悪徳商法?マニアックス」は、こちら

« すずきかんとオリンピック | トップページ | Yourpediaが警察に提供した情報は、IPアドレスとユーザエージェント情報だけです »

2013.09.11

[rails] 複数のbelongs_toを一度に設定する

モデルのassociationを使ってcreateすると、belongs_toも自動的に設定されます。しかし、3者間関係のように複数のbelongs_toがある場合、それらを自動的に設定するためには一工夫必要になります。

書籍(book)が、会社に所属する著者(author)と会社(company)に所有されている場合で考えて見ます。そのままcreateすると、bookのcompany_id はnil になります。

普通の解決法は、bookのcreate時にcompanyを明示的に指定する方法です。

ちょっと気の利いた解決法としては、associationを使ってbuildしたものを、concatする方法があります。

has_manyに条件を設定することで、railsがbelongs_toの関係を知ることが出来、一度に設定できるようになります。has_many :through の時にも使えます。

ruby2.0.0 + rails4.0.0 で確認しました。

2013 09 11 [ruby on rails] | 固定リンク このエントリーを含むはてなブックマーク

コメント

コメントを書く