2011-12-08 77 views
0

Rails 3.1。目前我有一個關聯具有取決於國家/地區的動態條件。對動態加載關聯的建議

class Article 
    has_many :comments, :conditions => Proc.new { { :country => Comment.country } } 
end 

Comment.country = "US" 

# Eager loads comments from the US 
Article.includes(:comments).all 

正如你所看到的,我設置的一類屬性標誌Comment.country告訴Article全國文章需要的時候急於加載它們。它有效,但我擔心競爭條件,因爲Comment.country會在所有用戶會話中共享。有人可以推薦我一個更好的方法來做到這一點?

更新: 更具體地講,我想急於負荷我的聯想讓我的SQL查詢,在最低限度。此外,當做類似

@article.comments 

它會根據條件拉入已經加載的評論。我不想做這樣的事情

@article.comments.where(:country => "US") 

,因爲它不僅是更多的SQL查詢,調用@article.comments被提及的意見​​相同的集合。

回答

0

你需要考慮關係,你想讓你的sql看起來像什麼?你只是想減少查詢的數量來加載國家代碼?

另外,請記住,延遲加載有時可以像加載時一樣快,具體取決於數據庫返回的數據量。