Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails需要在创建之前将字段传递给模型_Ruby On Rails - Fatal编程技术网

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