如果需要属性为nil,则返回另一个属性的值

时间:2011-07-10 10:58:05

标签: ruby-on-rails activerecord

我的User模型具有fullnameemail属性。

我需要以某种方式覆盖方法fullname,以便在email为空或空时返回fullname的值。

2 个答案:

答案 0 :(得分:6)

我还没有尝试使用ActiveRecord,但这有用吗?

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

  def fullname
    super || email
  end
end

这取决于ActiveRecord在这些方法中的混合方式。

答案 1 :(得分:4)

要做你想做的事,你可以很容易地覆盖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