我的MyModel
具有属性category
。只有两种可能的类别类别1 和类别2 。使用如下表单分配属性:
<%= f.input :category, collection: category_options %>
考虑什么&#34;良好做法&#34;在Rails中。我应该将属性保存为数据库中的字符串,还是应该为集合创建新的表/引用?
将类别存储为字符串具有保持数据库清洁的优点,但必须将集合分别存储在控制器中。此外,由于我使用i18n,我希望将类别存储为字符串会导致翻译问题。
答案 0 :(得分:2)
如果根据业务逻辑,您计划为每个类别提供一些属性,方法或其他内容,则应为Category
创建另一个模型。在管理复杂性方面,实现未来需求将不那么困难。如果您100%确定没有关于类别的额外内容,则应将其设置为在代码中添加一些验证的属性(例如,包含在category1
,category2
中)。< / p>
答案 1 :(得分:1)
对于简单的情况,我通常使用这样的东西。您可以使用内部字符串作为键来选择UI。
# View Code:
# <%= form.select :role, MyModel.categories, prompt: '' -%>
class MyModel < ActiveRecord::Base
validates :category,
presence: true,
inclusion: {
in: :categories,
allow_blank: true }
class << self
def categories
%w[hot warm cold]
end
end
def categories
self.class.categories
end
end