我正在使用Ruby on Rails 3.0.7,我想設置一個has_many : through
動態條件。'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
。
因此,爲了檢索與用戶相關的文章類別,在上面的Record Association代碼中,我想通過傳遞一個動態條件來過濾:article_category_relationships
,該動態條件取決於該用戶的id
值。否則,如果我通過id
值,則默認值應允許通過使用@article.article_categories
代碼檢索所有文章類別。
可能嗎?如果是這樣,我怎麼能在Record Association語句中編碼?
將'article_category_relationships'表名直接放在模型文件中是否是一種常見做法? – Backo
嗯,對不起 - 不知道我明白你的意思嗎?你能解釋一下嗎? – polarblau
我的意思是:我已經看到幾次直接在類\模型代碼中放置數據庫表的名稱(對於我來說,我是一個新手,這聽起來很奇怪......);這樣做是常見的做法?那就是那種常用的方法? – Backo