【问题标题】:How to use delegate method for more than two associations?如何将委托方法用于两个以上的关联?
【发布时间】:2011-03-09 23:31:23
【问题描述】:
假设我通过调用以下关联链来检索运动的名称:
pick.event.league.sport.name
如何使用delegate method 以便我可以像这样调用 *pick.event_league_sport_name*?显然,我可以在pick模型中创建一个方法:
def event_league_sport_name
return self.event.league.sport.name
end
但我想使用delegate method!!!
【问题讨论】:
标签:
ruby-on-rails
associations
delegation
【解决方案1】:
我不建议这样做,但如果你愿意...
delegate :name , :to => "event.league.sport" ,:prefix=>"event_league_sport"
也没有前缀。
一定要处理 nil 关联...
祝你有美好的一天!
【解决方案2】:
您可以执行以下操作:
class Pick
def sport
event.league.sport
end
delegate :name, :to => :sport
end
这将导致pick.name 等同于pick.event.league.sport.name。