我有以下型号:Ruby on Rails的 - 虚拟属性
create_table "material_costs", :force => true do |t|
t.string "material"
t.integer "height"
t.integer "width"
t.decimal "cost", :precision => 4, :scale => 2
t.datetime "created_at"
t.datetime "updated_at"
end
我将如何创建模型虚拟属性来给我按每种材料的平方英寸的成本是多少?
而且我已经持有增值税值另一种模式:
create_table "taxes", :force => true do |t|
t.string "name"
t.decimal "rate", :precision => 10, :scale => 0
t.datetime "created_at"
t.datetime "updated_at"
end
如何使用这个模型来给我每平方英寸的总价格为每一种材料项目,即需要对增值税率增加?
编辑 - 我现在存储在以下模型增值税值:
create_table "app_options", :force => true do |t|
t.string "name"
t.string "value"
t.datetime "created_at"
t.datetime "updated_at"
end
编辑 - 这是我的控制器代码:
def calculate_quote
@moulding = Moulding.find(params[:id], :select => 'cost, width')
@mount = MaterialCost.find(1).total_cost_per_square_mm
@glass = MaterialCost.find(2).total_cost_per_square_mm
@backing_board = MaterialCost.find(3).total_cost_per_square_mm
@wastage = AppOption.find(2, :select => 'value')
@markup = AppOption.find(3, :select => 'value')
respond_to do |format|
format.json { render :json => { :moulding => @moulding, :mount => @mount, :glass => @glass, :backing_board => @backing_board, :wastage => @wastage, :markup => @markup } }
end
end
当我尝试在控制器中使用类似`@mount = MaterialCost.find(1,:select =>'cost_per_square_mm')的方式提取这些数据时,我得到未知列'cost_per_square_mm'错误? – freshest 2010-12-01 16:14:42
您不能使用查找器查找虚拟属性。它们是虚拟的 - 也就是说,只要模型存在于内存中,它们就只存在于模型中,而不是存储在模型中的数据(例如数据库表中的行)。 – yfeldblum 2010-12-01 16:19:14