【发布时间】:2013-05-11 03:32:01
【问题描述】:
给定以下(大大简化的)对象:
class Player < ActiveRecord::Base
has_many :characters
end
class Character < ActiveRecord::Base
belongs_to :player
delegate :name, :to => :player, :prefix => :player
end
我需要在多个视图中显示玩家名称。但是 Player 可能为 nil 是完全有效的(并且是预期的)。
我目前通过以下方法处理了这个问题:
class Character < ActiveRecord::Base
belongs_to :player
def player_name
player ? player.name : 'Unknown'
end
end
我不喜欢这个有几个原因。有更好的方法吗?
【问题讨论】:
-
代表有 :allow_nil => true apidock.com/rails/v3.0.9/Module/delegate
-
感谢肖恩,我在发布问题后发现并开始使用它。我希望有一种定义“默认”值的方法,但我认为在我的观点中将其设为“空”几乎一样好/信息丰富,并且确实清理了我的模型。
标签: ruby activerecord ruby-on-rails-3.1