如果您确定类型是固定集,您可以在Project
模型中定义一些数字常量,并将这些数字存储在projects
表的列中。
这是一个示例(当然未经测试),我调用该列category_id
以避免使用type
会导致问题的名称,如 rjz 所说:
class Project < ActiveRecord::Base
# Project categories are constants
CHEAP_PROJECT = 1
SOUND_PROJECT = 2
GRAPHIC_PROJECT = 3
SECRET_PROJECT = 4
# Force project_category_id to be a valid category identifier
validates :category_id, :inclusion => {:in => 1..4}
# At this point you can use the constants
# Here an example of a scope to get the secret projects
scope :secret_projects, where(:category_id => SECRET_PROJECT)
end
确保验证category_id
值是您定义的值之一。一旦你有了这些常量,你甚至可以在其他地方使用Project::SOUND_PROJECT
.
我认为这是一个非常明确的解决方案,但是如果您的需求发生变化(它们总是在变化......),您必须创建一个模型并插入这些项目类别来维护这些标识符。