在Rails中,如何编写一个我不想返回的列的finder方法排序?

时间:2018-01-31 21:25:19

标签: ruby-on-rails sql-order-by ruby-on-rails-5 rails-activerecord

使用Rails 5,您如何编写一个按照您不一定要返回的列进行排序的查找程序?我有

Person.select("id, name").order('votes DESC').limit(15)

意思是我只想返回模型的“id”和“name”属性,但我希望模型本身按“投票”列排序。但是,运行上面的命令会出现错误

ActiveModel::MissingAttributeError: missing attribute: votes

如何编写按列排序的查找程序我并不总是想返回?

2 个答案:

答案 0 :(得分:1)

  1. pluck应该做的伎俩,但它返回一个[id,name]数组。

    Person.order('votes DESC').limit(15).pluck(:id, :name)

  2. find_by_sql返回一个ActiveRecord对象数组

    Person.find_by_sql('SELECT id, name FROM persons ORDER BY votes DESC LIMIT 15')

答案 1 :(得分:0)

NSKeyedArchiver.archivedData(withRootObject:)

应该做的伎俩。只需要分离要选择的属性。