RubyonRails根据状态查找最后x项



Arg,我是RoR新手,摸索着自己的方式,我在这里尝试的每一种可能的合理组合都失败了-非常感谢指针:

所以我有项目和状态。项目有一个状态,由status_id:引用

class Status < ActiveRecord::Base
  has_many :items
end
Class Item < ActiveRecord::Base
  belongs_to :status
end

状态可以是"待售"、"已删除"、"隐藏"、"售出"等。

在我网站的首页上,我一直在随机显示最近添加的30个项目:

<% latest_items = Items.last(30).shuffle %>
<% latest_items.each do |i| %>
  :
<% end %>

但是,我只希望在项目的状态设置为显示在首页的地方显示项目(例如,只显示状态为"待售"或"已售出"但不是"隐藏"的项目)。

我可能想添加项目的未来状态,所以我更新了状态表,以包含一列front_page,该列设置为1或0,具体取决于它是否显示在front_page上。首页可以显示多个状态。

我正在努力找出如何引用这个status.front_page字段,并构建有限的Items数组。我尝试了很多方法,但都无效。我是不是完全找错树了?

如果它有任何相关性,我使用的是Ruby 1.9.2p320/Rrails 3.1.0.rc8

尝试使用where(条件)语句

Item.joins(:status).where(:statuses => {:name => ["For Sale", "Sold"]}).last(30)

你也可以把它放在范围内

Class Item < ActiveRecord::Base
  scope :homepage_display, joins(:status).where(:statuses => {:name => ["For Sale", "Sold"]}).last(30)
# Then in your view
Item.homepage_display

我还建议切换您的关联,项目不应处于belong_to状态

最新更新