【问题标题】:How do I find the next record in an ActiveRecord set?如何在 ActiveRecord 集中找到下一条记录?
【发布时间】:2010-07-29 02:22:40
【问题描述】:

我在帕德里诺工作,我的控制器中有这个

@work.find_by_id(params[:id])

我想在我的视图中添加上一个/下一个按钮,因此必须能够获得列表中下一个项目的路径。如何使用 ActiveRecord 做到这一点?

【问题讨论】:

    标签: database activerecord orm padrino


    【解决方案1】:

    您可能需要查看ActsAsAdjacent plugin。我不确定您是否可以在 Padrino 中使用插件,但代码非常简单,应该能够适应您的需求。

    【讨论】:

      【解决方案2】:

      我像这样使用 PreviousNextable 模块:

      module PreviousNextable  
      
        def self.included(klass)
      
          klass.class_eval do
            extend ActiveSupport::Memoizable 
            memoize :previous
            memoize :next
          end
      
        end  
      
        def previous
          self.class.last :order => 'name', :conditions => ['name < ?', self.name]
        end
      
        def next
          self.class.first :order => 'name', :conditions => ['name > ?', self.name]
        end
      
      end
      

      此代码改编自 Ryan Bates 给出的 SO 答案。您确定上一个或下一个的顺序和条件可能会有所不同。可能您会想要使用“created_at”。

      在模型类中包含模块:

      class Place < ActiveRecord::Base
        include PreviousNextable  
      

      你走了。

      【讨论】:

        猜你喜欢
        • 2019-09-30
        • 1970-01-01
        • 2013-11-06
        • 1970-01-01
        • 1970-01-01
        • 2013-02-16
        • 2011-08-07
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多