我的Rails已经有些生疏了,我正在为自己找不出一个可能太基础而看不到问题的解决方法而苦恼。
我有一个表单,它可以去到我的控制器的create
操作。当我保存时,我需要同时更新另一个表中的一些项目,并且我想将它们全部包装在一个事务中。我认为最好是把事务放在模型中。当我这样做并尝试调用create
操作时,它会出现错误,告诉我该类别没有此方法。
equip_swaps_controller.rb
def create
respond_to do |format|
@equip_swap = EquipSwap.new(equip_swap_params)
if @equip_swap.trans_equip_and_save
format.html { redirect_to @equip_swap, notice: 'Equipment transfer was successfully created.' }
else
format.html { render action: 'failure' }
end
end
end
模型 equip_swap.rb
def self.trans_equip_and_save
EquipSwap.transaction do
Tool.transfer_equipment(self.to_vehicle, self.items_moved)
self.save
end
end
工具模型与所需方法
def transfer_equipment(location,ids)
ids.each do |id|
Tool.find(id).update(location: location)
end
end
我原以为调用类方法会允许我在@equip_swap
实例上执行该方法。但是当我尝试提交表单并创建新记录时,它告诉我Class...
没有trans_equip_and_save
方法。显然有些地方我没有注意到,请求帮助!
Tool.transfer_equipment(self.to_vehicle, self.items_moved)
中得到了一个新的错误undefined method 'transfer_equipment' for #<Class:0x007ff28ff9af18>
。我需要改变这些代码中的self
,以显式地调用实例吗? - Beartechdef self.transfer_equipment(location,ids)
。 - Sajin