我有一個簡單的問題,但似乎無法找到任何解決方案,雖然我發現的東西是相似的,但只是不完全是我在找什麼。基於模型屬性has_many關係過濾,rails 3?
我有一個應用程序,其中用戶有許多資產通過類UserAsset。我希望能夠執行current_user.user_assets,但我只想返回具有指定字段值爲「active」的Asset的記錄。
這個post是類似的,但我需要使用主模型而不是連接模型作爲過濾器。
class UserAsset < ActiveRecord::Base
belongs_to :asset
belongs_to :user
end
class Asset < ActiveRecord::Base
has_many :user_assets
has_many :users, :through => :user_assets
end
class User < ActiveRecord::Base
has_many :user_assets
has_many :assets, :through => :user_assets
end
我試着設置資產的默認範圍,也對有許多(user_assets)關係的一些條件,但Rails是未能考慮對資產表的連接。即'where子句'中的未知列'asset.live'。努力實現以下幾點:
@active_user_assets = current_user.user_assets #only where assets.active = true
那麼,如何使用條件或範圍來實現這一目標?我需要user_asset對象,因爲它包含關於相關關係的信息。
在此先感謝!
我不能使用HABTM,因爲我需要額外的關係領域。您的提示確實幫助我找到了解決方案:我在User.rb的「has_many:user_assets」行中添加了「:include =>:asset,:conditions =>」assets.active ='1'「」,現在它完美工作,但我不積極,這是最佳/合適的解決方案性能明智。我會花幾分鐘時間看看別人是否有更好的主意。謝謝 – utahtwo 2011-03-02 04:25:12