如何根据默认表插入多行?

时间:2012-12-16 05:35:53

标签: sql ruby-on-rails

我有以下表格:用户,默认价格,客户,客户价格。我想要的是在创建新客户端时让default_prices自动填写client_prices表。看起来我可以使用this answer的类似解决方案。我想要发生的是当用户创建一个新客户端时,客户端的所有client_prices都由default_prices表填充。

class User < ActiveRecord::Base
  attr_accessible :name, :email, :password, :password_confirmation, :remember_me, :stripe_token, :default_prices_attributes
  has_many :default_prices
  has_many :clients
  accepts_nested_attributes_for :default_prices, :allow_destroy => true


class DefaultPrice < ActiveRecord::Base
  attr_accessible :price, :user_id, :visit_type, :id
  belongs_to :user
end


class Client < ActiveRecord::Base
  attr_accessible :active, :address_1, :address_2, :city, :email, :first_name, :last_name, :state, :user_id, :zip, :client_prices_attributes
  belongs_to :user
  has_many :client_prices
  accepts_nested_attributes_for :client_prices_attributes


class ClientPrice < ActiveRecord::Base
  attr_accessible :price, :client_id, :visit_type, :id
  belongs_to :uclient
end

1 个答案:

答案 0 :(得分:0)

您可以添加before_create块来复制默认价格。

before_create do
  user.default_prices.each do |default_price|
    client_prices.build(default_price.attributes.slice("price", "visit_type"))
  end
end