Могу ли я переопределить то, что возвращает метод ассоциации? - PullRequest
0 голосов
/ 28 апреля 2011

В Rails я хочу переопределить поведение ассоциации.Например, по умолчанию, если Person has_many :hats, при вызове some_person.hats будет выполнено простое объединение с использованием person.id и hat.person_id.

. Я хочу изменить этот запрос, включив в него некоторые другие критерии.Например, возможно, коллекция шляп человека должна быть только шляпой, подходящей для его страны.

Кажется, я мог бы сделать что-то вроде этого:

class Person < ActiveRecord::Base
  has_many :hats, :through => :country do
    # John lives in Canada, so he gets a baseball cap and a hockey helmet
    self.country.hats
  end
end

МожетЯ контролирую, что ассоциация возвращает, как это?Если нет, то будет ли сфера лучшим решением?

Я знаю, что это глупый пример, но объяснение логики предметной области, для которой мне это нужно, было бы слишком скучным для всех здесь.:)

1 Ответ

1 голос
/ 28 апреля 2011

Области видимости, вероятно, ваш лучший вариант, потому что они могут быть использованы в цепях и многократно использоваться вне вашей ассоциации. В противном случае вы можете использовать расширения ассоциации. Проверьте эту тему для получения дополнительной информации. Расширения Ассоциации

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