Rails需要将字段传递给模型before_create

时间:2013-04-20 14:50:58

标签: ruby-on-rails

我有员工,联系人和用户。创建新的联系人或员工时,他们各自的模型会创建一个新用户。这些是关系:

  Contact belongs_to :user
  Employee belongs_to :user  
  User has_one :contact 
  User has_one :employee 

现在我在所有3个表中都有一个电子邮件字段。但是,我想从联系人和员工中删除电子邮件字段,并仅使用User.email。

目前,联系人模型代码是:

before_create :create_user

protected
def create_user
  self.user = User.create({ :email => self.email, :password => 'password' })
  return user.save
end

联系表格有:

            <%= f.input :email %>

如何将电子邮件发送到联系表单并将其传递给联系人控制器以输入新的用户记录?

感谢您的帮助!

UPDATE1

我尝试了这个,但它不起作用:

联系表格:

  <%= text_field_tag :email %>

联络管理员:

  protected
  def create_user
    self.user = User.create({ :email => params[:email], :password => '123456' })
    return user.save
  end

更新2

我试过这个,但它不起作用:

联系表格:

     <%= params[:email] = email_field_tag 'email'%>

联络管理员:

  before_create :create_user

protected
def create_user
  self.user = User.create({ :email => params[:email], :password => '123456' })
  return user.save
end

1 个答案:

答案 0 :(得分:0)

您可以使用text_field_tag辅助方法在视图中创建输入字段,但这听起来像滥用模型。如果您的表单代表“联系”模式,为什么不将email属性保留在Contact中并将其从User中删除?然后,为了方便起见,您可以将以下内容添加到User(注意:未经测试的代码):

def email
    contact.email
end

def email= email_addr
    contact.mail = email_addr
end