我在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
我的国家/地区拥有代码的主键,但我之前能够毫无问题地拨打此电话。
非常感谢任何尝试调试此操作的帮助,如果需要,我可以发布更多详细信息。
答案 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