class Post < ActiveRecord::Base
belongs_to :user
belongs_to :category
end
class User < ActiveRecord::Base
has_many :posts
end
class Category < ActiveRecord::Base
has_many :posts
end
我希望获得与user
和category
有关系的所有帖子。是否有类似可能:
user.category.posts
或者我需要这样做:
user.posts.where(category_id: category.id)
答案 0 :(得分:0)
尝试: -
user.posts.where(category_id: category.id)
答案 1 :(得分:0)
更改您的关联,例如
class Post < ActiveRecord::Base
belongs_to :user
belongs_to :category
end
class User < ActiveRecord::Base
has_many :post
belongs_to :category or has_one :category
end
class Category < ActiveRecord::Base
has_one :user or belongs_to :user
has_many :posts
end
用户表中的添加列category_id
,或在类别中添加列user_id
,因为这两个表之间没有关系。如果没有关系,则无法使用关联API。然后你必须使用手动API来获取数据。就像你提到你的问题一样。
答案 2 :(得分:0)
1-M relationship
和User
之间有Post
。
在用户模型中,关联应为has_many :posts
(注释复数),而不是has_many :post
(单数)。
更新您的模型User
,如下所示:
class User < ActiveRecord::Base
has_many :posts ## Plural posts
end
回答以下问题:
获取与用户和类别
有关系的所有帖子
假设您将局部变量user
和category
分别作为User
模型和Category
模型的实例。
例如:
user = User.find(1); ## Get user with id 1
category = Category.find(1); ## Get category with id 1
user.posts.where(category_id: category.id) ## would get you what you need.
此外,user.category.posts
无效,因为User
和Category
模型没有关联。