Я использую Ruby on Rails 3.0.7, и я хотел бы установить динамическое условие has_many : through
.
В моем файле модели:
class Article < ActiveRecord::Base
has_many :article_category_relationships,
:class_name => 'Article::Categories::ArticleRelationship',
:foreign_key => 'article_id',
:autosave => true,
:dependent => :destroy
# Here should be the dynamic condition statement (read below for more
# information about this)
has_many :article_categories,
:through => :article_category_relationships,
:source => :article_category,
:dependent => :destroy
end
В связанной таблице базы данных Article::Categories::ArticleRelationship
у меня также есть столбец created_by_user_id
(другие столбцы article_id
и category_id
), который представляет id
пользователя, создавшего отношение.
Итак, чтобы получить категории статей, относящиеся к пользователю, в приведенном выше коде ассоциации записей я хотел бы отфильтровать :article_category_relationships
, передав динамическое условие, которое зависит от этого пользовательского значения id
. В противном случае, если я не передам значение id
, значение по умолчанию должно позволять получать все категории статей с использованием кода @article.article_categories
.
Возможно ли это? Если да, то как я могу закодировать это в заявлении ассоциации записей?