【问题标题】:rails - activerecord SELECT TOP 1 field_name * FROM table_namerails - activerecord SELECT TOP 1 field_name * FROM table_name
【发布时间】:2012-06-20 09:02:50
【问题描述】:

我有一个这样的 sql:

SELECT TOP 1 field_name * FROM table_name

我想把它转换成 rails 中的 activerecord。

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-3.1


    【解决方案1】:

    那个代码不起作用?

    YourModel.select(:field_name).first
    

    YourModel.select(:field_name).order('id desc').first
    

    【讨论】:

    • 您也可以使用YourModel.select(:field_name).limit(1),但这并不重要,因为first 方法在用于ActiveRecord::Relation(如本例中)时,实际上会使用@ 987654326@
    • 是的,limit(1) 比 first 好。
    【解决方案2】:

    只需使用limit(1)first

    Model.select(:field_name).limit(1)
    

    【讨论】:

      【解决方案3】:

      挑选(Rails 6+)

      从 Rails 6 开始,您可以使用以下内容:

      YourModel.order(id: :desc).pick(:field_name)
      

      pick

      更有效率
      YourModel.select(:field_name).order('id desc').first
      

      因为它只会加载实际值,而不是整个记录对象。

      更多详情请关注link to docs

      另外,还有一个reference to the corresponding PR

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-03-16
        • 1970-01-01
        • 2015-06-12
        • 2013-06-01
        • 2021-05-20
        • 2012-05-07
        • 2018-04-12
        相关资源
        最近更新 更多