以下のように、互いに関連する4つのモデルがあります。
class User < ActiveRecord::Base
has_many :clients
has_many :default_prices
end
class DefaultPrice < ActiveRecord::Base
has_many :client_prices
has_many :clients, :through => :user
belongs_to :user
end
class Client < ActiveRecord::Base
belongs_to :user
has_many :client_prices
before_create do
user.default_prices.each do |default_price|
client_prices.build("price" => default_price.price, "visit_type" => default_price.visit_type, "default_price_id" => default_price.id)
end
end
end
class ClientPrice < ActiveRecord::Base
belongs_to :client
belongs_to :default_price
end
現在、ユーザーが新しいクライアントを作成すると、ユーザーのデフォルトの価格がクライアントの client_prices テーブルに適用されます。ユーザーが新しい default_prices を作成したときに、(既存のクライアントごとに) 新しい client_prices を作成するにはどうすればよいですか? また、デフォルトの価格が変更されたときに client_prices を更新するにはどうすればよいですか? 各クライアントの価格には、デフォルトの価格に関連する default_price_id 列があります。