在与布尔方法使用一个问号的Ruby的成语保持(如person.is_smart?
),我想在Rails的一个ActiveRecord领域做同样的:
rails generate model Person is_smart?:boolean
我还没有实际运行上面的语句。 我假设数据库字段不能在他们一个问号。 将轨道处理这是否正确? 是最好的做法,干脆离开问号关的模式?
使用Rails 3.2.8
在与布尔方法使用一个问号的Ruby的成语保持(如person.is_smart?
),我想在Rails的一个ActiveRecord领域做同样的:
rails generate model Person is_smart?:boolean
我还没有实际运行上面的语句。 我假设数据库字段不能在他们一个问号。 将轨道处理这是否正确? 是最好的做法,干脆离开问号关的模式?
使用Rails 3.2.8
Rails会自动生成方法smart?
如果有一场名为'smart'
。
一个“疑难杂症”要知道,如果你碰巧使用的:enum
在你的模型,因为这将值存储为整数。 由活动记录提供的问号ATTR方法希望在数据库中,以评估分别为0或1作为假/真。 例如:
class Person
enum mood: ['happy', 'sad', 'bored']
end
p = Person.new(mood: 'happy') # this would store mood as 0 in db
p.mood? #=> false
p.mood = 'sad' # saves as 1 in db
p.mood? #=> true
p.mood = 'bored' # saves as 2 in db
p.mood? #=> true
看到这种方法是如何工作的,看到轨道源
其实,我即时通讯使用Rails 4,不能没有问号叫我的布尔列
pry(main)> User.where(is_validated: false).first.is_validated
User Load (0.9ms) SELECT "users".* FROM "users" WHERE "users"."is_validated" = 'f' ORDER BY "users"."id" ASC LIMIT 1
=> nil
[13] pry(main)> User.where(is_validated: false).first.is_validated?
User Load (0.8ms) SELECT "users".* FROM "users" WHERE "users"."is_validated" = 'f' ORDER BY "users"."id" ASC LIMIT 1
=> false