我有一个名为 Contacts 的模型。
联系人可以有不同的状态“坏的、积极的、错误的……”
这些状态可能需要随着时间的推移而改变,但在所有联系人中,它们是相同的选项。
我应该这样建模吗:
Contacts.rb
belongs_to :status_contact
StatusContacts.rb
has_many :contacts
然后我手动填充表中的状态类型?
然后我想使用 Ajax 单击与某个值对应的按钮来更新联系人的值。
我有一个名为 Contacts 的模型。
联系人可以有不同的状态“坏的、积极的、错误的……”
这些状态可能需要随着时间的推移而改变,但在所有联系人中,它们是相同的选项。
我应该这样建模吗:
Contacts.rb
belongs_to :status_contact
StatusContacts.rb
has_many :contacts
然后我手动填充表中的状态类型?
然后我想使用 Ajax 单击与某个值对应的按钮来更新联系人的值。
看起来您正在尝试确保您的状态值始终限于您选择的一组可能的答案。如果这就是您想要做的所有事情,那么没有特别需要单独的表格。您可以在此处使用 ActiveRecord 验证的魔力。
首先,为联系人创建一个名为 :status 的字符串数据库列。
然后,您可以使用验证来确保将值限制为您想要的值。在 Rails 3 中,您可以这样做:
validate :status, :inclusion => { :in => %w( bad positive wrong ) }
(如果您使用的是 Rails 2,请改用 #validates_inclusion_of。)
在 ActiveRecord 中,验证会在保存之前检查对象的值是否有效;它拒绝将对象持久化到数据库中,直到所有验证通过。
还没有明确的答案 --- 我认为我需要使用该表,因为它允许用户添加和修改在他们的应用程序中使用的状态类型。
你的命名让我觉得有点奇怪——<code>ContactStatus 对我来说听起来好一点——但我认为这是实现你想要的一般想法。