我想限制字段的可用值.因此列的值必须来自指定的值集合.是否可能使用迁移/模型?或者我必须手动在我的数据库?
解决方法
您将使用验证.这是
a whole Rails guide on the topic.在这种情况下,你正在寻找的具体帮手是
:inclusion
,例如:
class Person < ActiveRecord::Base validates :relationship_status,:inclusion => { :in => [ 'Single','Married','Divorced','Other' ],:message => "%{value} is not a valid relationship status" } end
编辑2015年8月:从Rails 4.1开始,您可以使用枚举类方法.它需要您的列为整数类型:
class Person < ActiveRecord::Base enum relationship_status: [ :single,:married,:divorced,:other ] end
p = Person.new(relationship_status: :married) p.married? # => true p.single? # => false p.single! p.single? # => true
您可以在这里阅读枚举文档:http://api.rubyonrails.org/v4.1.0/classes/ActiveRecord/Enum.html