関連(Relation) ; Design

Rails の書留

元を辿れば「設計」

DB には世話になってる

なぜ Relation があるのか

共通の命令をコードの中で端的にかつ易に記す為。

Relation が無い場合

class Custom < ActiveRecord::Base
end

class Order < ActiveRecord::Base
end

新規 order を 既存 customer へ追加する。

@order = Order.create(order_date: Time.now, customer_id: @customer.id)

customer を削除する。つれて、これに関わる order も削除する。

@orders = Order.where(customer_id:  @customer.id)
@oerders.each do |order|
  order.destroy
end
@customer.destroy

Relatin が有る場合

class Custom < ActiveRecord::Base
  has_many :orders, dependent: :destroy
end

class Order < ActiveRecord::Base
  belongs_to :customer
end

新規 order を 既存 customer へ追加する。

@order = @customer.orders.create(order_date: Time.now)

customer 削除と同時に order も削除する

@customer.destroy

引用元 # thanks

Active Record Associations — Ruby on Rails Guides