1

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 / Rails 3.1.0.rc8

4

1 回答 1

2

尝试使用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状态

于 2012-08-18T15:20:09.640 回答