2014-01-14 50 views
0

我正在构建一个新模型,我想添加一个属性是一个选择器。你怎么做到这一点?什么是课堂?Rails模型属性选择器

我有标准:整数,:日期时间等

我想类型:

选择器将有多种选择[“跑”,“坐”,“驱动器”,“飞“]

感谢

回答

3

有红宝石在这个没有阶级,你可以得到最接近的是:

class YourModel < ActiveRecord::Base 
    MyOptions = ['run', 'ride', 'drive', 'fly'] 

    validates :my_attributes, inclusion: {in: MyOptions} 
end 

如果你想走得更远一步,您可以覆盖setter方法如果值是不是在允许值时抛出异常:

class InvalidValue < StandardError 
end 

def my_attribute=(value) 
    raise InvalidValue.new unless MyOptions.include?(value) 
    super 
end 
+0

谢谢,我怎么会产生这个? rails生成迁移add_type_to_events类型:??? – Marcus

+0

请注意名为'type'的属性:您还需要将'self.inheritance_column = nil'添加到您的类中。对于上面的问题,您可以像往常一样生成字符串列 - 它将作为字符串内部存储。 'rails g migration add_ _to_ :string' – BroiSatse

0

驼峰是类名的约定。我会去一个常数:

MY_OPTIONS = %w(run ride drive fly).freeze