对rails的mysql查询的更正

对rails的mysql查询的更正,mysql,ruby-on-rails,ruby-on-rails-3,Mysql,Ruby On Rails,Ruby On Rails 3,在rails中执行以下mysql查询时 cnt = Domainurl.find_by_sql ["SELECT Max(`count`)FROM `domainurls` WHERE `domaindetail_id`= ?",@domain.id] urlcr=Domainurl.find_by_sql ["SELECT * FROM `domainurls` WHERE `domaindetail_id` = ? AND `count` = ?",cnt.count] urlcr.each

在rails中执行以下mysql查询时

cnt = Domainurl.find_by_sql ["SELECT Max(`count`)FROM `domainurls` WHERE `domaindetail_id`= ?",@domain.id]
urlcr=Domainurl.find_by_sql ["SELECT * FROM `domainurls` WHERE `domaindetail_id` = ? AND `count` = ?",cnt.count]
urlcr.each do |cr|
  puts cr.url
end
我得到一个错误:

"error is: undefined method `closed?' for nil:NilClass"

问题出在您的最后一个查询上

urlcr=Domainurl.find_by_sql ["SELECT * FROM `domainurls` WHERE `domaindetail_id` = ? AND `count` = ?",cnt.count]
您试图通过两个参数(
domaindetail\u id
count
)查找某些内容,但您只提供
count
。(您还必须提供domaindetail\u id)

你可以这样重写

cnt = Domainurl.where(:domaindetail_id => @domain.id).maximum(:count) # this returns a number
urlcr=Domainurl.where("domaindetail_id = ? AND count = ?", @domain.id, cnt)

感谢您的回复:)以下查询**`cnt=Domainurl.where(:domaindetail\u id=>@domain.id)。最大(:count)urlcr=Domainurl.where(“domaindetail\u id=?AND count=?”,@domain.id,cnt.count)
**我仍然收到错误:*
“错误是:35:Fixnum的未定义方法
count”
**对此表示抱歉,当我第一次发布错误时,我编辑了最后一个查询,而不是
cnt。count
现在只是
cnt
,因为
最大值(:count)
返回的是一个数字,而不是一个对象
cnt = Domainurl.where(:domaindetail_id => @domain.id).maximum(:count) # this returns a number
urlcr=Domainurl.where("domaindetail_id = ? AND count = ?", @domain.id, cnt)