Ruby on rails RubyonRails:在我的模型中基于另一个字段设置数据

Ruby on rails RubyonRails:在我的模型中基于另一个字段设置数据,ruby-on-rails,autocomplete,Ruby On Rails,Autocomplete,我有一个项目模型,它有一个名称和一个价格(int)。我怎样才能做到当用户从下拉列表中选择名称时,价格会自动添加到数据库中 我的name下拉列表由以下格式的散列填充:THINGS={'item1'=>'item1','item2'=>'item2',等等}我认为一个大的switch语句 case s when hammer item.price = 15 when nails item.price = 5 when screwdriver

我有一个
项目
模型,它有一个
名称
和一个
价格
(int)。我怎样才能做到当用户从下拉列表中选择
名称时,价格会自动添加到数据库中

我的
name
下拉列表由以下格式的散列填充:
THINGS={'item1'=>'item1','item2'=>'item2',等等}
我认为一个大的switch语句

case s
    when hammer
        item.price = 15
    when nails
        item.price = 5
    when screwdriver
        item.price = 7
end
但我不确定我会把这个开关放在哪里


谢谢

您需要在保存回调之前将其推入

在这个回调中,您检查用户选择的名称并更新价格

class Item

  before_save :update_price

  def update_price
    self.price = Product.find_by_name(self.name).price
  end
end
如果您想验证您的价格是否真的在模型中定义,您也可以在验证之前进行

class Item

  before_validation :update_price
  validates_presence_of :price

  def update_price
    self.price = Product.find_by_name(self.name).price
  end
end

这不是我想要的。我有一个散列项目,我需要将散列项目与价格自动关联。所以基本上,我有
东西={'A Hammer'=>'Hammer','Some钉子'=>'Nails',等等}
。我需要的是一种制作方法,这样当选择“锤子”时,就可以设定10的价格。事实上,我已经算出了。谢谢你的帮助!