2015-06-23 89 views
2

我有兩種型號UserSite。用戶具有「基本和高級」等類別。用戶與站點有關係 - >很多(即一個用戶可以有多個站點)。現在我想選擇高級用戶的網站。有人能告訴我如何使用ActiveRecord中的where子句來實現這一目標嗎?活躍記錄在哪裏條款關係在型號

+0

是A類用戶表中的列?或者類別本身不是另一種模式? –

+0

這是一個專欄。 – Vijay

+0

@Vijay是的,你也可以在網站的where子句中使用。注意:'where子句會給你一個記錄集合,而不是一個記錄' – Mandeep

回答

2

我要選擇優質用戶的網站

這將做

User.includes(:sites).where('users.category = ?', 'premium') 

更新

如果網站也有類別,如「Wordpress或joomla',我如何 適用where子句來選擇付費用戶

對於只有WordPress網站,你需要調整這樣

User.includes(:sites).where('users.category = ? and sites.category = ?', 'premium','wordpress') 
+0

現在,如果網站也有類似「wordpress或joomla」的分類,我如何應用where子句來選擇只有高級用戶的wordpress網站。 – Vijay

+0

@Vijay我已經更新了我的答案。 – Pavan

+1

非常感謝您的幫助。它幫助我解決了我的問題:)。 – Vijay

0

正如你說,category是一列,所以Rails的自動爲您生成以下方法:

User.find_by_category("basic") 

如果你不想使用它,你可以使用where方法,你必須發送鍵 - 值對類似以下內容:

User.where(:category => "basic") 

當你找到你想要的類別user,你可以簡單地調用它的sites得到所有相關網站的Wi一個特定的用戶。

+1

我需要選擇網站。不是用戶。 – Vijay

0

查詢你可以試試這個也:

@user_ids = User.where(category: 'premium').pluck(:id) 
@sites = Site.where(user_id: @user_ids)