我应该如何在Rails中存储属性的集合?

时间:2016-04-25 14:57:44

标签: ruby-on-rails ruby collections rails-i18n

我的MyModel具有属性category。只有两种可能的类别类别1 类别2 。使用如下表单分配属性:

<%= f.input :category, collection: category_options %>

考虑什么&#34;良好做法&#34;在Rails中。我应该将属性保存为数据库中的字符串,还是应该为集合创建新的表/引用?

将类别存储为字符串具有保持数据库清洁的优点,但必须将集合分别存储在控制器中。此外,由于我使用i18n,我希望将类别存储为字符串会导致翻译问题。

2 个答案:

答案 0 :(得分:2)

如果根据业务逻辑,您计划为每个类别提供一些属性,方法或其他内容,则应为Category创建另一个模型。在管理复杂性方面,实现未来需求将不那么困难。如果您100%确定没有关于类别的额外内容,则应将其设置为在代码中添加一些验证的属性(例如,包含在category1category2中)。< / 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
相关问题