2014-03-13 57 views
1

我有一個Word對象has_many類別通過WordCategoriesActiveRecord:如何通過關聯「在has_many中選擇位置」?

我想獲得與傳遞的類別id有關係的單詞列表。

在SQL中我會寫

select * from words where category_id = (1,2,3,4) 

是否有可能做到這一點,但仍然帶回字對象的結果呢?上述

編輯

我的例子是不正確。我有一個3種型號,

  • 類別
  • 字典

Word有許多字典,和類別通過字典 類別有許多字典和字在字典中 字典屬於單詞和字典

+0

如果'Words'的has_many'Categories'然後' word_id'字段將存在於「類別」中。那麼,問題中的'category_id'是什麼?你能分享這些模型嗎? –

+0

@KirtiThorat - 你是對的。我的例子中有一個錯誤。實際上,我通過一個名爲dictionaries的表來關聯路由。我會更新這個問題。 – user1491929

回答

1

你可以參加三個型號如下:

Word.joins(word_categories: :category).where(category: { id: [1, 2, 3, 4] }) 

或加入wordword_categories和使用word_categories.category_id where子句爲:

Word.joins(:word_categories).where(word_categories: { category_id: [1, 2, 3, 4] }) 
+0

這看起來是最優化的方式(它的工作原理)。謝謝。 – user1491929

0

ActiveRecord的where可以接收一組ID和se針對拱:

def self.with_category_ids(category_ids_array) 
    where(:category_id => category_ids_array) 
end 

將是一個類的方法返回所有Word對象有category_id這是「incategory_ids_array

相關問題