Возвращаемое значение другого атрибута, если необходимый атрибут равен нулю - PullRequest
6 голосов
/ 10 июля 2011

У меня есть модель User, которая имеет атрибуты fullname и email.

Мне нужно как-то перезаписать метод fullname, чтобы он возвращал значение email, когда fullname равно нулю или пусто.

Ответы [ 2 ]

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

Я не пробовал с ActiveRecord, но работает ли это?

class User < ActiveRecord::Base
  # stuff and stuff ...

  def fullname
    super || email
  end
end

Это зависит от того, как ActiveRecord смешивается в этих методах.

4 голосов
/ 10 июля 2011

Чтобы сделать то, что вы хотите, вы можете легко переопределить программу чтения по умолчанию для fullname и сделать что-то вроде этого:

class User < ActiveRecord::Base
  def fullname
    # Because a blank string (ie, '') evaluates to true, we need
    # to check if the value is blank, rather than relying on a
    # nil/false value. If you only want to check for pure nil,
    # the following line wil also work:
    #
    # self[:fullname] || email
    self[:fullname].blank? ? email : self[:fullname]
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...