添加范围以在 rails 中以其创建时间的相反顺序获取对象
Adding scope to get objects in reverse order of their created time in rails
我是 Ruby rails 和编程的新手。
我正在做一个练习,我有一个 Post 模型,我需要向它添加一个新的 scope 来检索它对象的创建时间倒序。
这是我的模型代码:
class Post < ActiveRecord::Base
has_many :comments
belongs_to :user
scope :ordered_by_reverse_order, -> { order('created_at DESC').reverse}
end
我也试过{reverse('created_at DESC')}
,都没有用。
试试这个:
范围:ordered_by_reverse_order,-> {顺序('created_at ASC')}
听起来你想要 reverse_order
(Rails 3+)。
scope :ordered_by_reverse_order, -> { order(:created_at).reverse_order }
在 rails 上定义模型范围时,我更喜欢使用 class 方法。
这与您的范围方法完全相同,但我个人认为它更清晰。
尝试按升序而不是降序排列您的帖子:
class Post < ActiveRecord::Base
has_many :comments
belongs_to :user
def self.reversed
order('created_at ASC')
end
end
# ASC
# Fri, 20 Feb 2015 08:41:26 UTC +00:00
# Fri, 20 Feb 2015 08:42:25 UTC +00:00
# Fri, 20 Feb 2015 08:43:53 UTC +00:00
# DESC
# Fri, 20 Feb 2015 12:43:25 UTC +00:00
# Fri, 20 Feb 2015 08:44:48 UTC +00:00
# Fri, 20 Feb 2015 08:43:53 UTC +00:00
执行以下命令应该return你想要什么:
Post.reversed
您也可以只按 DESC
排序,而不是像这样使用 .reverse_order
:
default_scope { order(created_at: :desc) }
我是 Ruby rails 和编程的新手。 我正在做一个练习,我有一个 Post 模型,我需要向它添加一个新的 scope 来检索它对象的创建时间倒序。
这是我的模型代码:
class Post < ActiveRecord::Base
has_many :comments
belongs_to :user
scope :ordered_by_reverse_order, -> { order('created_at DESC').reverse}
end
我也试过{reverse('created_at DESC')}
,都没有用。
试试这个:
范围:ordered_by_reverse_order,-> {顺序('created_at ASC')}
听起来你想要 reverse_order
(Rails 3+)。
scope :ordered_by_reverse_order, -> { order(:created_at).reverse_order }
在 rails 上定义模型范围时,我更喜欢使用 class 方法。 这与您的范围方法完全相同,但我个人认为它更清晰。
尝试按升序而不是降序排列您的帖子:
class Post < ActiveRecord::Base
has_many :comments
belongs_to :user
def self.reversed
order('created_at ASC')
end
end
# ASC
# Fri, 20 Feb 2015 08:41:26 UTC +00:00
# Fri, 20 Feb 2015 08:42:25 UTC +00:00
# Fri, 20 Feb 2015 08:43:53 UTC +00:00
# DESC
# Fri, 20 Feb 2015 12:43:25 UTC +00:00
# Fri, 20 Feb 2015 08:44:48 UTC +00:00
# Fri, 20 Feb 2015 08:43:53 UTC +00:00
执行以下命令应该return你想要什么:
Post.reversed
您也可以只按 DESC
排序,而不是像这样使用 .reverse_order
:
default_scope { order(created_at: :desc) }