当动态创建一个类方法时,有没有办法在创建时加入一些已知的参数?
我为自己制作了一个模块,它在创建模型时根据给定的属性生成:slug
属性。https://gist.github.com/firedev/4943289:title
但是我想重构这部分:
def create_slug(title_attr, slug_attr, &block) # generated method
self.send(slug_attr) # I have to pass slug_attr from outside
...
end
所以我可以在这里摆脱所有的参数:
self.send :after_initialize do
create_slug(title_attr, slug_attr, &block) # I pass attributes from here
end
并在创建的方法中嵌入参数:
def create_slug # this method is generated automatically
self.send(:slug) # I want :slug to be baked in
...
end
self.send :after_initialize, :create_slug # no attributes