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 Png genki on Mon 4 Sep 2006 at 17:45

Comments:

or Preview
Social Bookmarks
  • Delicious
  • B_entry61
  • Clip_16_12_w
Services from s21g
twpro(ツイプロ)
Twitterプロフィールを快適検索
地価2009
土地の値段を調べてみよう
MyRestaurant
自分だけのレストラン手帳
Formula
ブログに数式を埋め込める数式コミュニティ