【发布时间】:2011-07-18 12:15:10
【问题描述】:
我喜欢使用 ?对于布尔字段,例如,对于“动物”表“活着?”非常明显。 我在哪里定义这个?创建表迁移时是否用它命名db字段(不这么认为)。 或者它对于布尔字段是自动的,还是我在动物的活动记录模型类中有一个小方法,说像 def alive 之类的东西? if alive then true else false end ?
【问题讨论】:
标签: ruby-on-rails activerecord
我喜欢使用 ?对于布尔字段,例如,对于“动物”表“活着?”非常明显。 我在哪里定义这个?创建表迁移时是否用它命名db字段(不这么认为)。 或者它对于布尔字段是自动的,还是我在动物的活动记录模型类中有一个小方法,说像 def alive 之类的东西? if alive then true else false end ?
【问题讨论】:
标签: ruby-on-rails activerecord
Rails 会自动为模型中的每个字段生成一个以? 结尾的方法。
一些例子:
Animal #=> Animal(id: integer, alive: boolean, name: string)
a = Animal.new
a.alive #=> nil
a.alive? #=> false
a.alive = true
a.alive? #=> true
a.name #=> nil
a.name? #=> false
a.name = "Giraffe"
a.name? #=> true
还请注意,您可以轻松定义自己的 ? 方法:
class Animal
def young?
created_at > 1.day.ago
end
end
【讨论】:
对于 ActiveRecord 中的所有布尔字段,此行为是自动的。
作为一个额外的细节,我喜欢用is_ 前缀命名布尔字段。 is_alive,给你is_alive?。
【讨论】:
is_a?、'is_missing?'、'is_eos?'等