Я бы написал это несколько иначе. Вы перебираете все элементы, но вас интересует только первый элемент. Вы возвращаетесь изнутри блока итерации, но для каждого элемента блок будет выполнен. В ruby 1.9.2 это выдает ошибку.
Также я бы предложил использовать другое имя класса (Class
используется для определения класса)
Итак, мое предложение:
Class YourGoodClassName
def self.too_low(amount)
res = YourGoodClassName.find_by_sql(...)
if res.size > 0
res[0].price.round(2) < 1.00
else
true
end
end
end
Вы можете видеть, как я проверяю, найден ли какой-либо результат, и если это так, я просто возвращаю значение теста (истинное или ложное); и вернуть true, если цена не была найдена.
В контроллере вы пишете что-то вроде
flash[:warning] = 'Price is too low' if YourGoodClassName.too_low(params[:amount])