【发布时间】:2015-03-03 17:05:39
【问题描述】:
我有两个类,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}")
【问题讨论】:
-
不完全清楚您想“从哪里”访问
role属性。你能提供一些你想要实现的伪代码吗? -
您能告诉我们您尝试过哪些不起作用的方法吗?
-
好的,我希望我的问题更清楚了。
标签: ruby activerecord