4th Mon
ActiveRecord: コレクションの挙動
This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/94
度々忘れがちなので備忘録。
ActiveRecordのhas_manyアソシエーションなどを使うと、コレクションに対するアクセサが追加されます。
class Group < ActiveRecord::Base has_many :members endこのとき、コレクションに対して以下のようにARオブジェクトを追加すると、
group.members << Member.new(params[:member])group.new_record?が真の場合はMemberはそのままコレクションに追加され、DBは変化しませんが、group.new_record?が偽の場合は、Memberは直ちにsaveされ、DBに格納されます。
group.new_record?が偽の場合にDBを変更せずにMemberをコレクションに追加したい場合は、以下のようにbuildメソッドを利用します。
group.members.build(params[:member])余談ですが、リソース系のオブジェクトはcreateよりもnewを使う事が多いですね。 Ajaxでちょっとずつリソースを作っていって、完成したところでsaveでDBに格納。 逆にActivity系のオブジェクトは、createで作成と同時にDBに格納する感じです。
This article was migrated from http://rails.office.drecom.jp/takiuchi/archive/94
posted by
genki on Mon 4 Sep 2006 at 17:45 with 0 comments