我有一个Word对象,通过WordCategories具有很多类别
我想获得与传递的类别ID有关系的单词列表。
在sql中我会写
select * from words where category_id = (1,2,3,4)
是否可以这样做,但仍然会带回Word对象?
修改
我上面的例子不正确。我有3个模型,
Word有许多词典,并通过词典进行分类 类别有很多词典,词典也有词典 字典属于Word和Dictionary
答案 0 :(得分:1)
您可以按如下方式加入这三个模型:
Word.joins(word_categories: :category).where(category: { id: [1, 2, 3, 4] })
或加入word
和word_categories
并在where子句中使用word_categories.category_id
作为:
Word.joins(:word_categories).where(word_categories: { category_id: [1, 2, 3, 4] })
答案 1 :(得分:0)
ActiveRecord的where
可以获取一系列ID并搜索:
def self.with_category_ids(category_ids_array)
where(:category_id => category_ids_array)
end
将是一个类方法,它返回Word
为category_id
“in
的所有category_ids_array
个对象。