gpt4 book ai didi

mysql - 两个不同的 View 具有不同的数据库排序顺序(default_scope)

转载 作者:行者123 更新时间:2023-11-29 08:19:36 26 4
gpt4 key购买 nike

在我的模型 (pins.rb) 中,我有两个排序顺序:

default_scope order: 'pins.featured DESC' #for adding featured posts to the top of a list
default_scope order: 'pins.created_at DESC' #for adding the remaining posts beneath the featured posts

这个排序顺序(上面)就是我想要的“图钉 View ”(index.html.erb)的外观。这只是所有用户帖子的列表。

在我的“用户 View ”(show.html.erb) 中,我使用相同的模型 (pins.rb) 仅列出 current_user 引脚。但是,我想排序顺序以忽略“特色”默认范围并仅使用第二个范围:

default_scope order: 'pins.created_at DESC'

我怎样才能做到这一点?我尝试做这样的事情:

default_scope order: 'pins.featured DESC', only: :index
default_scope order: 'pins.created_at DESC'

但是那并没有飞...

更新

我更新了模型来定义范围:

scope :featy,  order: 'pins.featured DESC'
default_scope order: 'pins.created_at DESC'

并将我的图钉 View 更新为:

<%= render @pins.featy %>

但是,现在当我打开图钉 View 时,出现错误:

undefined method `featy' for #<Array:0x00000100ddbc78>

最佳答案

我建议考虑执行以下操作:

Pins.rb:

这将导致精选内容位于列表顶部,并按创建时间对它们进行二次排序。 (注意按 bool 值排序的两种方法)

class Pin < ActiveRecord::Base
belongs_to :user

default_scope order: 'created_at DESC'
# Method 1
scope :featy, order('featured DESC, created_at DESC')
# Method 2
# scope :featy, order('(case when featured then 1 else 0 end) DESC, created_at DESC')
end

用户.rb:

class User < ActiveRecord::Base
has_many :pins
end

UsersController.rb:

class UsersController < ApplicationController
def show
@user = User.find(params[:id])
# Pins are accessed via: @user.pins
# These should be sorted by `created_at DESC` as that is the default_scope
end
end

users/show.html.erb:这是按 created_at desc 排序的所有用户 pin

<%= @user.pins %>

PinsController.rb:

class UsersController < ApplicationController
def index
# Pins sorted by created_at: @pins = Pin.all
# Pins sorted by created_at with all featured on top:
@pins = Pin.featy
end
end

pins/index.html.erb:这是按 created_at desc 排序的所有图钉,所有功能均位于顶部

<%= @pins %>

关于mysql - 两个不同的 View 具有不同的数据库排序顺序(default_scope),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19781589/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com