Ruby,使用'?' - db或模型方法?

Mic*_*ant 1 activerecord ruby-on-rails

我喜欢用吗?对于布尔字段,例如,'animals'table"alive?" 非常明显.我在哪里定义这个?在创建表迁移时,是否使用它命名db字段(不要这么认为).或者它是自动的布尔字段还是我在活动记录模型类中有一个小方法用于表示类似def alive的动物?如果活着那么真的是假的结局?

gun*_*unn 6

Rails自动?为模型中的每个字段生成以a结尾的方法.一些例子:

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
Run Code Online (Sandbox Code Playgroud)

另请注意,您可以轻松定义自己的?方法:

class Animal
  def young?
    created_at > 1.day.ago
  end
end
Run Code Online (Sandbox Code Playgroud)