我有一个关于ActiveRecord关联的问题,我试图拥有User
模型,其中每个用户可以拥有许多Product
s(然后属于该特定用户)。但是,在展示产品之前,它需要一个活动权限,因此我想在构造中添加第三个模型Permission
。
我制定了以下句子,使思维过程更容易:
一个User
has_many Product
,其中每个都有_ Permission
。
ActiveRecord关联现在看起来像这样:
class User < ActiveRecord::Base
has_many :products
has_many :permissions
end
class Product < ActiveRecord::Base
belongs_to :user
has_one :permission
end
class Permission < ActiveRecord::Base
belongs_to :product
belongs_to :user
end
我的问题:
User
has_many权限和Permission
belongs_to用户?我想请大家确认一下我的想法是否正确,或者是否错了,或者是否有更好的方法来掌握我的问题,我希望这个问题对其他人也有用,谢谢!
答案 0 :(得分:2)
我会同时回答这两个问题。代码将起作用(给定正确的迁移),但不适用于您想要的内容。从User类中删除has_many :permissions
,从Permission类中删除belongs_to :user
。
答案 1 :(得分:0)
has_many :permissions, through: :products
,如果您希望它能够从用户获得permissions
,但permissions
表中不包含user_id
列。 生成db查询,如:
SELECT "permissions".*
FROM "permissions" INNER JOIN "products" ON "permissions"."product_id" = "products"."id"
WHERE "products"."user_id" = [user_id]