我正在开发一个市场应用程序,卖家可以列出要出售的商品。在列表展示页面上,我开发了一个名为"此卖家的其他商品的小部件"。我使用以下查询将这些项目拉入视图。
Listing.where(:user_id => @listing.user)
这有效,但它包含了activerecord。因为这是"其他项目的小部件"我想要排除用户当前所在页面的列表。请注意" user_id"列表模型中的字段是卖家用户ID。
我该如何修改?我尝试了以下但它给了我一个错误,说它期望" =>"。
Listing.where(:user_id => @listing.user, :id != @listing.id)
答案 0 :(得分:3)
如何简单地将数组参数用于where
:
@listing.user.listings.where(["id != ?", @listing])
OR(更好的表现)
Listing.where(["user_id = ? AND id != ?", @listing.user_id, @listing.id])
答案 1 :(得分:1)
为完整起见,如果您使用的是rails 4.x,则可以使用.where.not
Listing.where(user_id: @listing.user_id).where.not(id: @listing.id)
答案 2 :(得分:0)
除了RAJ's回答之外,您可以将这两个子句链接起来进行一次查询
Listing.where(:user_id => @listing.user).where("id != ?", @listing.id)