Я использую Ruby on Rails 3.0.10 и пытаюсь реализовать метод scope
в моей модели (скажем, модель A
), включив в него вызов метода, присутствующего в другой модели (скажем, модель) B
). То есть в A
у меня есть:
scope :not_rel, lambda { |article, user| where("articles.id NOT IN (?)", article.find_owned_by(user).map(&:id)) }
Метод find_owned_by
указан в B
и предназначен для поиска статей, принадлежащих пользователю. Однако, используя приведенный выше код, я получаю ошибку ActiveRecord::StatementInvalid (Mysql2::Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DISTINCT ...
.
Итак, мой вопрос:
Можно ли вызвать метод find_owned_by
в scope :not_rel
именованной области действия?
Как я могу решить ошибку ActiveRecord::StatementInvalid
?
Может ли проблема быть связана с методом map(&:id)
, вызываемым в модели?