Я пытаюсь создать область действия для модели в моем проекте, но я хочу, чтобы запрос фильтровал элементы на основе метода в моей модели.
Это моя модель:
class Talent < ApplicationRecord
scope :public_profile, -> { Talent.all.select{ |t| t.age > 13 } }
def age
now = Time.now.utc.to_date
now.year - self.birth_date.year - ((now.month > self.birth_date.month ||
(now.month == self.birth_date.month && now.day >= self.birth_date.day)) ? 0 : 1)
end
Когда я пытаюсь запустить эту область, я получаю сообщение об ошибке:
NoMethodError: undefined method `year' for nil:NilClass
from app/models/talent.rb:195:in `age'
from (irb):6:in `block in irb_binding'
from (irb):6
Строка 195 по моему методу age. Так что, вероятно, при выполнении выбора, мой элемент прибывает ноль.
Что я здесь не так делаю?