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