Ruby on rails 如何向用户模型添加多封电子邮件?

Ruby on rails 如何向用户模型添加多封电子邮件?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,我有一个简单的用户模型。在更新区域,我希望用户能够添加任意多的电子邮件 什么是更整洁、更简单的方法?它应该被做成一个数组吗?如果是,如何自定义视图?我应该用什么 谢谢 非常感谢任何指导或帮助我认为标准的方法是采用一种新的模式,称为电子邮件,并建立关联,以便用户有许多电子邮件。所以,你会有这样的想法: class User has_many :emails end class Email belongs_to :user end 主电子邮件通常用作用户的主要标识,通常需要唯一的验证。别

我有一个简单的用户模型。在更新区域,我希望用户能够添加任意多的电子邮件

什么是更整洁、更简单的方法?它应该被做成一个数组吗?如果是,如何自定义视图?我应该用什么

谢谢


非常感谢任何指导或帮助

我认为标准的方法是采用一种新的模式,称为电子邮件,并建立关联,以便用户有许多电子邮件。所以,你会有这样的想法:

class User
  has_many :emails
end

class Email
  belongs_to :user
end

主电子邮件通常用作用户的主要标识,通常需要唯一的验证。别碰它

如果没有太多的电子邮件要添加,并且该操作不频繁,则可以添加一个额外字段,如字符串类型的“alternative_emails”

添加时,请在电子邮件之前添加空格

alternative_emails += " #{new_email}"
使用时,请将其拆分

alternative_emails.split(" ").each { |email| email.send }

那么除了这个还有别的选择吗?我觉得这有点过火了。我知道这可能感觉过火了,因为你的电子邮件模型目前只有一个属性(目前),在用户模型的一个属性中保存多封电子邮件会反过来伤害你。根据用户的电子邮件搜索用户将变得极其困难。将电子邮件作为一个单独的模型可以方便地查询未来。我如何接受用户的电子邮件并将其保存到数据库?我知道我可以通过将它们隔开来使用,也可以创建一个额外的字段,如
alternative\u emails
并将其序列化(数组)。但就像我说的,我如何将其保存到数据库中?这是用户模型的一个简单属性,在添加电子邮件时只需更新此属性。在您的情况下,为什么不将其序列化为数组(字符串)?一个属性extra_emails的类型是(Ruby)ArrayYep,这就是我要问的:)。我可以使用
tmp=params[:user]
访问控制器更新方法中的参数,然后我可以使用
tmp[“可选电子邮件”]
访问电子邮件,但我如何将新电子邮件附加到它?@MrYoshiji yep它想过这样做,但不确定如何附加电子邮件。