Ruby on Rails:根据另一个字段在我的模型中设置数据

时间:2010-08-12 08:03:41

标签: ruby-on-rails autocomplete

我的item模型有nameprice(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

但我不知道我会把这个转换放在哪里。

由于

1 个答案:

答案 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