我有一个用户模型和一个带有多对多关联的产品模型,在这两个模型中我都有" has_and_belongs_to_many"
我知道这可以让我处理这样的关系:
user = User.first
user.products #shows all products bought by a user
和
product = Product.first
product.users # show all users who bought that product
但可能还有一款产品尚未被任何用户购买,因此该产品将位于产品表中,但不会出现在 user_products 连接表中。
如何仅返回已在联接表中保存的用户 - 产品关联?
另外,假设我想要创建一个产品,同时定义它已经被 - 属于 - 第一和第二个用户购买。我想到了:
User.all[0..1].each {|usr| usr.product.create(name: "tv")}
这是暗示关联并使用记录填充连接表的正确方法吗?
如上所述,如果我的产品在产品表中,但仍然没有用户购买它,现在用户购买了它:我怎么能表达这个所以以后我可以做
user.products
并查看该产品?
答案 0 :(得分:1)
如何仅返回已保存在连接表中的用户 - 产品关联?
你不能,因为你决定使用has_and_belongs_to_many
,根本无法访问连接表。考虑使用has_many through
关系。
这是暗示关联并使用记录填充连接表的正确方法吗?
应该是:
User.limit(2).each {|usr| usr.products.create(name: "tv")}
或
User.limit(2).each {|usr| usr.products << Product.create(name: "tv")}
如上所述,如果我有一个产品在产品表中,但仍然没有用户购买它,现在用户购买它:如何表达这一点以便以后我可以做什么
只需user.products.reload