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
状态