我正在轨道上构建一个市场应用程序4.我有一个卖家小部件,在我们的平台上显示随机的卖家列表。有时,卖家'商品已过期,因此他们没有任何待售商品。我想排除这些卖家出现在小工具中。
我有一个用户模型(用户可以是买家或卖家)。卖家有个人资料描述和形象,而买家则没有。因此,要创建窗口小部件,我使用以下查询。
<% User.where("profileimage_file_name != ? AND profilestory != ?", "", "").order("random()").limit(12).each do |user| %>
#some code to link to seller page
<% end %>
我有一个Listing模型,它存储所有产品列表,并将user_id作为外键。
用户模型没有任何列表数据。如何编写查询,以便我可以将用户模型加入列表模型,并仅显示至少有1个列表处于活动状态的用户。
答案 0 :(得分:1)
有两种方法可以做到这一点:
@sellers = User.where("profileimage_file_name != ? AND profilestory != ?", "", "").
joins(:listing).
where("listings.created_at <= (created_at + INTERVAL 30 day) ").
order("random()").limit(12)
更清洁的方式:
class User < ActiveRecord::Base
default_scope -> { order("random()")} # this is optional
scope :sellers, -> { where("profileimage_file_name != ? AND profilestory != ?", "", "") }
scope :with_active_listings, -> { joins(:listing).where("listings.created_at <= (created_at + INTERVAL 30 day) ")}
...
end
然后简单地说:
@sellers = User.sellers.with_active_listings.limit(12)
这些是一般性的,并对您的系统做了一些假设,但希望它足够有意义。让我知道这是否有帮助。