我有模型文章
class Article
include Mongoid::Document
has_and_belongs_to_many :categories, inverse_of: nil
end
我有模型类别
class Category
include Mongoid::Document
field :name, type: String
end
我有一些类别,名称为Author
,Security
,Mobile
等。
如何查找category.name == 'Author'
的所有文章?
我试试这个:
Article.where(categories: [name: 'Author'])
但它不起作用。
答案 0 :(得分:2)
您只需使用以下查询:
category = Category.where(:name => 'Author').first
articles = category.articles
答案 1 :(得分:1)
has_and_belongs_to_many意味着一个n-n关系,所以如果你想这样查询,你真的需要一个反向关系。
class Article
include Mongoid::Document
has_and_belongs_to_many :categories
end
class Category
include Mongoid::Document
field :name, :type => String
has_and_belongs_to_many :articles
end
现在你可以这样做:
Category.where(:name => 'Author').first.articles
或者,您可以将类别存储在文章本身的数组中
class Article
include Mongoid::Document
field :categories, :type => Array, :default => []
end
然后你可以这样做
Article.in(:categories => 'Author')
如果你真的无法改变你的模特,试试这个:
author_category = Category.where(:name => 'Author').first
Article.in(:category_ids => author_category.id)