关于rails的枚举

2015-09-13  本文已影响415人  33d8e4ec2cc9

当我们的表里有字段仅仅只是记录一个状态或者阶段亦或是类型时,我们一般会用整数,或者是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')

上一篇 下一篇

猜你喜欢

热点阅读