在设计注册中创建并分配一个有很多关系

时间:2013-02-01 14:48:44

标签: ruby-on-rails devise nested-attributes

当用户通过设计注册时,我正在尝试创建新的合作伙伴对象,然后在创建用户时分配该关系。这是我目前所拥有的:

模型/ user.rb

  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable, :token_authenticatable, :omniauthable

  # Setup accessible (or protected) attributes for your model
  attr_accessible :email, :password, :password_confirmation, :remember_me, :admin, :partner_ids, :provider, :uid

  #has_and_belongs_to_many :partners
  has_many :partners, :through => :partners_users
  has_many :partners_users
  accepts_nested_attributes_for :partners_users
  accepts_nested_attributes_for :partners

  def with_partner
    self.partners.build
    self
  end

模式/ partner.rb

  attr_accessible :name, :address, :verified, :verification_code

  has_many :users, :through => :partners_users
  has_many :partners_users
  has_many :places
  has_many :offers

注册表格

 registration_path(resource_name)do | f | %GT;       帐户信息         商业信息             5%>        “大花哨的按钮”%>   

目前,当我提交表单时,我收到以下错误:

Can't mass-assign protected attributes: partner

我在这里做错了什么?

2 个答案:

答案 0 :(得分:0)

如果您将accept_nested_attributes与attr_accessible一起使用,则需要将属性放在attr_accessible中:

attr_accessible :partner_attributes

答案 1 :(得分:0)

查看this

accepts_nested_attributes_for模型中使用User可以将数据发送到Partner模型。

然后,在用户模型中,您必须设置所请求的attr_accessible

attr_accessible : partner_attributes