アクティブレコード アソシエーション Active Record Associations まとめ 1
RailsGuides v4より Active Record Associations — Ruby on Rails Guides
Active Record Associations
- アクティブレコードモデル間の関連の宣言の方法
- アクティブレコードアソシエーションのそれぞれのタイプの理解の仕方
- モデルに追加されたメソッドを、アソシエーションを作ることで使う方法
1. なぜアソシエーションか
なぜモデル間のアソシエーションが必要なのか。
- コード中のよく使う操作をシンプルかつ簡単にすることができる。
アソシエーション機能ある・なし比較
モデルの宣言:
なし:class Customer < ActiveRecord::Base end class Order < ActiveRecord::Base endあり:class Customer < ActiveRecord::Base has_many :orders, dependent: :destroy end class Order < ActiveRecord::Base belongs_to :customer end既存の利用者に新しい注文を追加する:
なし:@order = Order.create(order_date: Time.now, customer_id: @customer.id)あり:@order = @customer.orders.create(order_date: Time.now)利用者を消して、その注文も必ず消去されるようにするには:
なし:@orders = Order.where(customer_id: @customer.id) @orders.each do |order| order.destroy end @customer.destroyあり:@customer.destroy
という用な感じになる
続く...