【问题标题】:Rails model structuresRails 模型结构
【发布时间】:2011-10-06 15:59:05
【问题描述】:

我已经在 Stack 上看到了一些关于此的主题,但想要更清楚一点。

我见过很多应用程序都有产品模型和类别类别模型。这是一个 has and belongs to many 关联,或者一个 has_many through 关联。

我还看到许多应用程序都有用户模型和电子邮件地址模型。 Email_address 属于用户,但用户可以有多个电子邮件地址。

我的问题是,您是否可以将所有电子邮件地址或类别分别归入用户模型和产品模型?那么在您的用户模型中,您将拥有 email_one、email_two 等?

把它分成不同的模型有什么好处和坏处?谢谢。

【问题讨论】:

    标签: ruby-on-rails model


    【解决方案1】:

    如果属性很简单,几乎可以肯定最好将其保存在单个模型中 - 您甚至可以序列化该属性,以便它获取例如 email_addresses 数组。但是(大但是)您可能希望向电子邮件地址添加更多信息 - 哪个是主要地址,最后一次分析是什么时候,最后一次发送电子邮件到..等等等等。这当然更容易处理如果您有单独的电子邮件地址模型。所以也许问题真的是“我什么时候应该使用序列化属性?”。我自己的答案是'只有当我确定我在该字段中存储了我不想添加更多属性的内容时'。通常这意味着它是主应用程序的外围设备,并且没有人非常关心......

    【讨论】:

    • 请记住,如果您序列化一个数组,例如电子邮件地址到单个字段中,然后根据单个电子邮件地址可靠地找到用户变得更加困难
    • 谢谢@Gareth。因此,将事物分成各自的模型以提供最大的灵活性是有意义的。
    • @chrispanda,是否可以在用户模型中有两个或多个字段,例如电子邮件地址?就像不是将其存储在一个字段或单独的电子邮件模型中,您可以在用户模型中拥有primary_email、secondary_email、tertiary_email 等属性?例如,我对此类问题的担忧是难以在不同的模型中使用电子邮件和密码验证用户。谢谢。
    • 嗯,这是可能的,但我想不出这样做的充分理由。如果您想使用电子邮件和密码进行身份验证,那么您可能需要一个 primary_email 字段来执行此操作。其他字段也可以被序列化——这样做的好处是你不受固定数量的备用电子邮件地址的限制——尽管正如 Gareth 指出的那样,这使得根据他们的电子邮件搜索用户变得更加困难地址
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多