Как работают методы объединения рельсов? Рассмотрим этот пример
class User < ActiveRecord::Base
has_many :articles
end
class Article < ActiveRecord::Base
belongs_to :user
end
Теперь я могу сделать что-то вроде
@user = User.find(:first)
@user.articles
Это извлекает мне статьи, принадлежащие этому пользователю. Пока все хорошо.
Теперь я могу продолжить и найти на этих статьях некоторые условия.
@user.articles.find(:all, :conditions => {:sector_id => 3})
Или просто метод declare и ассоциаций вроде
class User < ActiveRecord::Base
has_many :articles do
def of_sector(sector_id)
find(:all, :conditions => {:sector_id => sector_id})
end
end
end
И сделайте
@user.articles.of_sector(3)
Теперь мой вопрос: как этот find
работает с массивом объектов ActiveRecord
, извлеченных с использованием метода ассоциации? Поскольку, если мы реализуем собственный метод экземпляра User
под названием articles
и пишем нашу собственную реализацию, которая дает нам те же результаты, что и метод ассоциации, поиск в массиве выборки объектов ActiveRecord
не работает.
Я предполагаю, что методы ассоциации присоединяют определенные свойства к массиву извлеченных объектов, которые позволяют продолжить запрос с использованием методов find
и других ActiveRecord
. Какова последовательность выполнения кода в этом случае? Как я могу проверить это?