1
如何重写ruby父类中的一行或多行代码? 例如:我有方法create
Rails的控制器类:Ruby特别重写父类方法
class GenericController < ApplicationController
def create
@resource = SomeClass.new
if @resource.save
...
else
...
end
end
end
而且我还有一个控制器,孩子该控制器的
class ChildController < GenericController
def create
super do
# HERE I WANT TO DO SOME ACTIONS BEFORE SAVE.
end
end
end
我怎样才能做到这一点?我试过这个(通用控制器):
def create
@resource = SomeClass.new
yield if block_given?
if @resource.save
...
end
end
但是如果我想通过多个块呢?例如,如果我想做回调:after_init,:before_save,:after_save等?
好的,但是如果我想添加一些代码如果资源创建后呢?块将执行两次。 – Roman
谢谢=)这就是我想要的=) – Roman
@Roman,如果你用你的创建方法传递块:1)你将不得不多次调用create()。 2)您必须添加一个变量,指示该块在*块之后是*之前的*还是*。 3)超级类将不得不跳过'resource.save'步骤'if block_given?' – 7stud