【问题标题】:Find newest objects in ActiveRecord在 ActiveRecord 中查找最新对象
【发布时间】:2009-03-23 11:05:41
【问题描述】:

简单的问题:我需要帮助编写 ActiveRecord find_all_by 语句,我想在其中对从最新创建的对象到最旧的对象进行排序。

作为这个问题的后续:如果我将结果保存到变量 @records.然后我如何要求其中的下一条记录?我想做类似@current_record = @records.next

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    此代码将执行您的初始查询

     @records = Model.find_all_by_column('value', :order => 'created_at DESC')
    

    关于您的跟进。如果要遍历返回的数组,则可以执行以下操作

     @records.each do |record|
      # Code to do something
     end
    

    在迭代器中,您可以在看到特定记录时设置一个标志,然后对迭代器中的下一条记录执行某些操作。

    如果您想检查查找器返回的数组中是否有任何记录,则可以检查@records.length

    【讨论】:

    • 是每个。当你有一组记录时,在 Ruby 中做唯一的控制结构?
    • 另外,你如何检查@records 是否真的有任何对象?我做了一个 if @records == nil 检查,但即使我在 Model 表中没有任何内容,这似乎也是错误的。
    • 有各种方法可以遍历数组,这就是 ActiveRecord 结果所拥有的。尝试查看 apidock.com/ruby/Arrayapidock.com/ruby/Enumerable (Array 将其混入其中),Rails 中的 ActiveSupport 添加了更多内容。
    • 哦,@records 如果为空,将是一个空数组,因此您可以测试@records == [] 或@records.size == 0
    • 使用@records.empty?检查空的@records 变量
    【解决方案2】:
    Model.find_all_by_column_name('something', :order => "...")
    

    【讨论】:

      【解决方案3】:

      对于问题 2:“其中的下一条记录”是什么意思?

      如果你搜索一种显示结果的方式,使用每一种都很方便:

      <% @records.each do |record| %>
         #...
      <% end %>
      

      或者甚至更好,带有部分

      <%= render :partial => 'record', :collection => @records %>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-09-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多