| USER_NAME
对于上面的关联,我需要进行以下查询。
class Post < ActiveRecord::Base
has_many :categorizations
has_many :categories, through: :categorizations
class Categorization < ActiveRecord::Base
belongs_to :category
belongs_to :post
end
class Category < ActiveRecord::Base
has_many :categorizations
has_many :posts, through: :categorizations
end
显然这个查询@posts = Post.includes(:categories).where(active: true)
@categories = @posts.categories
不起作用,但我该怎么做?
更新: 以下两个答案我都会收到此错误
@categories = @posts.categories
答案 0 :(得分:0)
到Category
班级,添加:
class Category < ActiveRecord::Base
has_many :categorizations
has_many :posts, through: :categorizations
然后你可以做类似的事情:
@posts = Post.includes(:categories).where(active: true)
@categories = Category.where(post: @posts)
答案 1 :(得分:0)
在一个查询中:
@categories = Category.joins(:posts).where(posts: { active: true })
答案 2 :(得分:0)
首先你需要声明关系:
在Categorization
模型中,您需要
belongs_to :post
并在您的Category
模型中
has_many :categorizations
has_many :posts, through: :categorizations
如果您忘记了这一点,则活动记录会假设post
是一个类别列,因为您从未告诉他这是一种关系