如何使用委托方法进行两个以上的关联?

时间:2011-03-09 23:31:23

标签: ruby-on-rails associations delegation

假设我正在通过调用以下关联链来检索该运动的名称:

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 !!!

2 个答案:

答案 0 :(得分:8)

我不建议这样做,但如果你想......

delegate :name , :to => "event.league.sport" ,:prefix=>"event_league_sport"

也没有前缀。

务必处理无关联......

度过愉快的一天!

答案 1 :(得分:3)

您可以执行以下操作:

class Pick
  def sport
    event.league.sport
  end

  delegate :name, :to => :sport
end

这会导致pick.name等同于pick.event.league.sport.name