当我们的表里有字段仅仅只是记录一个状态或者阶段亦或是类型时,我们一般会用整数,或者是string,但一般还是用整数的多,那么问题来了,当我们看到数据库里面的0,1,2,3的时候难免会忘记这个数字代表什么样的一个状态,这时候我们就需要用到枚举,我们用一个gem来完成,叫做Enumerize,非常好用的一个gem。
gem 'enumerize'
bundle
比如现在有个表是User,里面有个状态是性别,我们用0来表示男性,1来表示女性
那么在模型里面我们这么写
class User
extend Enumerize
enumerize: sex, in: {male: 0, female: 1}, predicates: {prefix: true}, scope: true
end
假设现在有个User的实例,性别是male
user = User.new(sex: 'male')
user.sex
=> "male"
user.sex_text
=> "male"
user.sex_value
=> 0
user.sex_male? (第一个参数的方法)
=> "true"
user.sex_female?
=> "false"
user.with_sex(:male) (第二个参数的方法)
=># SELECT "users".* FROM "users" WHERE "users"."sex" IN ('male')
网友评论