我的item
模型有name
和price
(int)。我怎么能这样做,当用户从下拉列表中选择name
时,价格会自动添加到数据库中?
我的name
下拉列表由这种格式的哈希填充:THINGS = { 'Item 1' => 'item1', 'Item 2' => 'item2', etc }
我在想一个大的switch语句,我在这里做了类似的事情
case s
when hammer
item.price = 15
when nails
item.price = 5
when screwdriver
item.price = 7
end
但我不知道我会把这个转换放在哪里。
由于
答案 0 :(得分:2)
你需要在before_save回调中推送它。
在此回调中,您检查用户选择的名称并更新价格
class Item
before_save :update_price
def update_price
self.price = Product.find_by_name(self.name).price
end
end
如果您想验证您的价格是否真的在您的模型中定义
,您也可以在before_validation中进行class Item
before_validation :update_price
validates_presence_of :price
def update_price
self.price = Product.find_by_name(self.name).price
end
end