Рубин, использование '?'- БД или модельный метод? - PullRequest
1 голос
/ 18 июля 2011

Я люблю использовать?для логических полей, например, для таблицы «животных» «живы?»это очень очевидно.Где я могу определить это?Должен ли я назвать поле db им при создании миграции таблицы (не думаю, что так).Или это автоматически для логических полей, или у меня есть небольшой метод в классе моделей активной записи для животных, который говорит что-то вроде def alive?если жив, то правда, иначе ложь конец?

Ответы [ 2 ]

6 голосов
/ 18 июля 2011

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
1 голос
/ 18 июля 2011

Это поведение является автоматическим для всех логических полей в ActiveRecord.

В качестве дополнительной сложности я хотел бы назвать логические поля с префиксом is_.is_alive, давая вам is_alive?.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...