我有一个Pins模型生成的两个视图(user / show和pins / index)。
在users / show上,我想使用默认范围来显示所有引脚。 在pins / index上,我想使用featured_order范围在顶部显示“特色”引脚,然后继续默认范围。
这是我所拥有的,但由于某种原因,它将恢复到所有内容的默认范围。
class Pin < ActiveRecord::Base
attr_accessible :content, :title
belongs_to :user
# for sorting featured and newest pins first
default_scope order: 'created_at DESC'
scope :featured_order, order('(case when featured then 1 else 0 end) DESC, created_at DESC')
end
在我的index.html.erb中,我渲染了一个部分(_pin.html.erb):
<%= render @pins %>
在我的show.html.erb中,我有一个列表:
<% @pins.each do |pin| %>
<%= pin.title %>
<%= pin.content %>
<% end %>
答案 0 :(得分:3)
在索引控制器中
@pins = Pin.featured_order
然后你可以迭代它。 这将按特色顺序排序,并在需要时使用default_scope。
如果这不起作用,最好的办法是创建范围,并根据需要使用而不是默认范围。
我总是偏向于使用default scope。