Как использовать метод делегата для более чем двух ассоциаций? - PullRequest
4 голосов
/ 10 марта 2011

Скажем, я получаю название вида спорта, вызывая следующую цепочку ассоциаций:

pick.event.league.sport.name

Как я могу использовать метод делегата , чтобы я мог простоназвать * pick.event_league_sport_name * как это?Очевидно, я могу создать метод в модели выбора:

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

Но я хочу использовать метод делегата !!!

Ответы [ 2 ]

8 голосов
/ 10 марта 2011

Я не предлагаю этого, но если вы хотите ...

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

также без префикса.

обязательно обработайте ноль ассоциаций ...

хорошего дня!

3 голосов
/ 10 марта 2011

Вы можете сделать следующее:

class Pick
  def sport
    event.league.sport
  end

  delegate :name, :to => :sport
end

В результате pick.name будет эквивалентно pick.event.league.sport.name.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...