6

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

pick.event.league.sport.name

如何使用委托方法,以便我可以像这样调用 *pick.event_league_sport_name*?显然,我可以在pick模型中创建一个方法:

def event_league_sport_name
     return self.event.league.sport.name
end

但我想使用委托方法!!!

4

2 回答 2

11

我不建议这样做,但是如果您愿意...

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

也没有前缀。

一定要处理 nil 关联...

祝你今天过得愉快!

于 2011-03-10T00:35:45.973 回答
4

您可以执行以下操作:

class Pick
  def sport
    event.league.sport
  end

  delegate :name, :to => :sport
end

这将导致pick.name等价于pick.event.league.sport.name

于 2011-03-10T00:34:27.187 回答