2012-01-06 2 views
0

При выполнении ниже запроса MySQL в рельсахкоррекции для запросов 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" 

Я немного слабым в MySQL, может кто-нибудь наставит меня в исправлении виноват? :)

спасибо :)

ответ

2

проблема в вашем последнем запросе

urlcr=Domainurl.find_by_sql ["SELECT * FROM `domainurls` WHERE `domaindetail_id` = ? AND `count` = ?",cnt.count] 

вы пытаетесь найти что-то по 2 параметрам (domaindetail_id и count), но вы предоставляете только count. (Вы должны предоставить domaindetail_id тоже)

urlcr=Domainurl.find_by_sql ["SELECT * FROM `domainurls` WHERE `domaindetail_id` = ? AND `count` = ?",@domain.id, cnt.count] #observe that I added @domain.id 

Вы можете переписать это как

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

спасибо за Ваш ответ :) для запроса ниже ** 'CNT = Domainurl.where (: domaindetail_id => @ domain.id) .maximum (: count) urlcr = Domainurl.where ("domaindetail_id =? AND count =?", @ domain.id, cnt.count) '** все еще я получаю ошибку: ** '" error is: undefined method 'count 'for 35: Fixnum" '** – Aniruddhsinh

+0

извините за это, когда я опубликовал первый раз, когда совершил ошибку, я отредактировал последний запрос, а вместо' cnt.count' теперь просто 'cnt 'потому что' maximum (: count) 'возвращает число, а не объект – cristian

+0

Теперь он работает Большое спасибо вам :) – Aniruddhsinh

Смежные вопросы