所以我運行了一個.where查詢來選擇一組activerecords。每個記錄都有一個.items關聯,每個關聯的項目都有一個theme_id。無論如何,我可以過濾只有那些有關聯項目的theme_id爲0的記錄,而無需執行每個初始數組或每種顯式循環?Activerecord查詢過濾器之後
爲了說明它更好地:
[P_0,...,P_N]就是我的。哪裏過濾 每個p後獲得具有[I_0,...,1-N] 關聯數組每個我都有一個theme_id。我想只得到那些有一個項目,其theme_id爲0.
所以我運行了一個.where查詢來選擇一組activerecords。每個記錄都有一個.items關聯,每個關聯的項目都有一個theme_id。無論如何,我可以過濾只有那些有關聯項目的theme_id爲0的記錄,而無需執行每個初始數組或每種顯式循環?Activerecord查詢過濾器之後
爲了說明它更好地:
[P_0,...,P_N]就是我的。哪裏過濾 每個p後獲得具有[I_0,...,1-N] 關聯數組每個我都有一個theme_id。我想只得到那些有一個項目,其theme_id爲0.
我不知道你的代碼庫,所以這是在黑暗中刺,但你不能通過預訂獲得相同的數組有點邏輯?
ary = Item.where(theme_id: 0).map {|i| i.association_you_want }
ActiveRecord where
採用「散列語法」,允許您指定關聯(以及這些關聯的關聯)。 joins
和where
之間的交互有點有趣,其中joins
需要表名,where
需要關聯名稱。這些哈希語法where
條件可以根據需要嵌套。
根據我的經驗,最好使用哈希語法(如果可以的話)而不是使用字符串條件。
.joins(:items).where(items: {theme_id: 0})
雖然此代碼段可以解決的問題,[包括一個解釋](http://meta.stackexchange.com/questions/114762/explaining-entirely-code-based-answers)確實有助於改善您的帖子的質量。請記住,您將來會爲讀者回答問題,而這些人可能不知道您的代碼建議的原因。 – DimaSan