这更像是一个概念证明而不是其他任何东西。我有一个“服装”的模型。每件服装都有与之关联的数据,包括名为cid
的标识符。请注意,这与rails自动创建的id
无关。
这个想法是,如果有人试图使用正在使用的cid
来制作服装,他们将会找回已经拥有cid
的服装。用例是如果他们填写的唯一字段是cid
,则rails可以完成其余的工作。
请注意,我不想在控制器中调用另一个方法。当我在新的服装表单上点击创建时,我希望这种情况发生。
我想使用before_save
回调来完成此操作以及类似find_or_initialize_by
class Costume < ActiveRecord::Base
before_save :get_costumes
def get_costumes
Costume.find_or_initialize_by(cid: self.cid)
end
end
谢谢!
答案 0 :(得分:1)
为什么不这样做。
def self.get_costume(cid) // notice singularity
Costume.find_or_create_by_cid(cid)
end
在任何控制器中,如customs_controller.rb
Costume.get_costume(122)