【问题标题】:wrong number of arguments (given 1, expected 0) error shown错误数量的参数(给定 1,预期 0)错误显示
【发布时间】:2017-02-28 17:46:37
【问题描述】:

我的申请中有此声明

User.all(:conditions => "status <> 3", :order => "firstname, lastname").collect{|x| [x.name, x.id.to_s]}

我试图找到所有用户并按名字和姓氏对他们进行排序。

当我尝试使用这个语句时,它给了我错误

参数数量错误(给定 1,预期为 0)。

谁能帮我解决这个问题?

【问题讨论】:

  • 这个错误是由什么函数引起的?
  • code def user_options options = User.all(:conditions => "status 3", :order => "firstname, lastname").collect{|x| [x.name, x.id.to_s]} 结束
  • 不,上面的 sn-p 中的哪个函数提供了错误数量的参数?错误应该说。
  • 错误显示这一行options = User.all(:conditions =&gt; "status &lt;&gt; 3", :order =&gt; "firstname, lastname").collect{|x| [x.name, x.id.to_s]}
  • 我知道查询需要更改为 rails 4 不知道如何更改它..

标签: ruby-on-rails


【解决方案1】:

另一种写法

User.where('status <> 3').order(:firstname, :lastname).pluck(:name, :id)

唯一的区别是 id 不会被转换为字符串,所以如果你真的需要这个,你可以附加 .map { |res| res[1] = res[1].to_s; res }

【讨论】:

  • 使用查询为options = User.where('status &lt;&gt; 3').order(:firstname, :lastname).collect{|x| [x.name, x.id.to_s]}worked...
  • 请注意,pluck 的性能可能会更好。如果您使用collect,则意味着您实例化了所有ActiveRecord 对象,而pluck 将返回一个更“轻量级”的数组。我认为documentation 说得很好。 “使用 pluck 作为快捷方式来选择一个或多个属性,而无需加载一堆记录只是为了获取您想要的属性。”
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-01-27
  • 1970-01-01
  • 2020-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多