在轨道上的ruby中将列值相乘

时间:2013-11-07 02:50:31

标签: mysql ruby-on-rails ruby ruby-on-rails-2

我是ruby on rails的总菜鸟所以我要做的是将两列中每行的值相乘并将其存储在一个新对象中。我知道如何在mysql中执行此操作,但是当我在.erb文件中执行此类操作时

@ordertotals = Orderline.where(:id =>  @orderparts.id).sum("quantity * price")

我收到此错误

undefined method `where' for #<Class:0x7f843ff72ce8>

我一直在环顾四周,无法找到如何实际操作我理解的搜索位置的解释。我已经看到有些东西实际上需要放在模型文件中但是我不知道从哪里开始如何在模型中定义它或者调用它从.erb文件传递所需的信息,有人可以向我解释这个吗?

class Orderline < ActiveRecord::Base

belongs_to :order
end

2 个答案:

答案 0 :(得分:2)

where仅在Rails 3.x中添加。由于您使用的是Rails 2.3.x,因此必须使用旧语法。

@ordertotals = Orderline.find(:all, :conditions => ["id = ?", @orderparts.id], :select => "quantity * price as total_price")

我希望我的语法正确。没有导轨2来测试它。

答案 1 :(得分:0)

Rails 2.3.x的语法

@ordertotals = Orderline.all(:conditions=>"id='#{@orderparts.id}'",:select=>"quantity * price as PRODUCT")