Ruby on rails Rails需要在创建之前将字段传递给模型
我有员工、联系人和用户。创建新联系人或员工时,他们各自的模型将创建一个新用户。这些关系是:Ruby on rails Rails需要在创建之前将字段传递给模型,ruby-on-rails,Ruby On Rails,我有员工、联系人和用户。创建新联系人或员工时,他们各自的模型将创建一个新用户。这些关系是: Contact belongs_to :user Employee belongs_to :user User has_one :contact User has_one :employee 现在我在所有3个表中都有一个email字段。但是,我想删除联系人和员工的电子邮件字段,只使用User.email 目前,联系人型号代码如下: before_create :create_us
Contact belongs_to :user
Employee belongs_to :user
User has_one :contact
User has_one :employee
现在我在所有3个表中都有一个email字段。但是,我想删除联系人和员工的电子邮件字段,只使用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 %>
更新2
我试过这个,但不起作用:
联络表格:
<%= text_field_tag :email %>
<%= params[:email] = email_field_tag 'email'%>
您可以使用
text\u field\u标记
helper方法在视图中创建输入字段,但这听起来像是滥用了模型。如果您的表单表示“联系人”模型,为什么不将电子邮件
属性保留在联系人
中,并将其从用户
中删除?然后,为了方便起见,您可以将以下内容添加到User
(注意:未测试的代码):
不确定保持电子邮件联系是否有效。我使用Desive进行安全/登录,用户输入他们的电子邮件和密码进行登录。我还有一个Employee表,其设置方式与Contact表相同。因此,我想将电子邮件保留在用户表中。好的,我试试看。谢谢,我认为你的模型弄错了。你应该更新你的问题来解释员工模型是如何影响所有这些的。比那些电子邮件设置和获取方法更简单的是简单的委派。此外,他可能需要自动保存。是否显示联系人的型号代码?如果是这样,我觉得有点奇怪,父对象将被创建为子对象的before\u过滤器,而不是子对象被创建为父对象的after\u过滤器。我读对了吗?我有两个表单可以添加用户=新联系人或新员工。将人员添加到其中一个时,将创建一个新用户。
<%= 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
def email
contact.email
end
def email= email_addr
contact.mail = email_addr
end