我有两个课程,User
和Product
在多对多的课程中通过'关联,使用类Prole
(用于产品角色)。
class User < ActiveRecord::Base
has_many :proles
has_many :products, through: :proles
end
class Product < ActiveRecord::Base
has_many :proles
has_many :users, through: :proles
end
class Prole < ActiveRecord::Base
# has an attribute called 'role'
end
prole有一个名为role
的属性,我想用它来限定用户 - 产品关联。
该关联工作正常,但我无法弄清楚如何在创建关联后访问role
属性。例如,如果我这样做:
user.products << product
如何访问刚创建的prole对象中的属性?
我想我可以遍历prole对象并找到正确的对象,但我希望有更清洁的方式。
这可能吗?任何提示?
TIA。
我希望有更直接的东西,但是这里有一个 可能的答案:
prole = Prole.find_by user_id: user.id, product_id: product.id
甚至更好
prole = user.proles.where("product_id = #{product.id}")
答案 0 :(得分:0)
经过一些测试后,看起来最简单的方法是抓住刚创建的Prole对象,直接通过Prole模型查询两个外键,如您可能的答案所示。
Prole.find_by(user_id: user.id, product_id: product.id)
如果您希望它作为user
对象上的关联,您可以使用includes
方法进行预先加载,但它仍然会为{{1}加载每个prole
问题
user
有关详细信息,请参阅this answer。但看起来你可能的答案是最干净的方式。