ActiveRecord没有正确读取方法参数

时间:2014-07-07 12:50:16

标签: ruby activerecord sinatra

我在Sinatra项目中遇到了一些非常特殊的结果。

一切都工作正常,然后今天早上我开始在ActiveRecord电话中收到错误。

我的第一个电话是从我的国家/地区表中获取一个随机行

这失败了:

@randomCountry = Country.where( "name != ?", @countryName ).first( :order => "RANDOM()" )

出现以下错误:

can't convert Hash into Integer

如果我遗漏了:订单,我就不会收到错误,所以这样做有效:

@randomCountry = Country.where( "name != ?", @countryName ).first()

但显然不是理想的,因为它不再是随机的!

然后再向下一点,我得到一个像这样的完整国家名单:

@countriesList = Country.find(:all, :order => "name")

以下错误:

Couldn't find all Countries with 'code': (all, {:order=>"name"}) (found 0 results, but was looking for 2)

如果我按名称省略订单:

@countriesList = Country.find(:all)

我收到此错误:

Couldn't find Country with 'code'=all

我的国家/地区拥有代码的主键,但我之前能够毫无问题地拨打此电话。

非常感谢任何尝试调试此操作的帮助,如果需要,我可以发布更多详细信息。

1 个答案:

答案 0 :(得分:1)

如果您使用的是最新版本的AR,请尝试:

Country.where("name != ?", @countryName).order('RANDOM()').first
# If you're using AR 4 you can do:
# Country.where.not(name: @countryName).order('RANDOM()').first

Country.order('name').all