2011-04-14 150 views
0

可以说我有这个在我的控制器:我可以有一个运行几种方法的操作吗?

def something 
end 

def email 
end 

def house 
end 

我想创建一个运行所有的动作的东西,电子邮件和房子

def runall 
Run email, something and house 
end 

它是如何做的动作?

+0

也许这不是最好的主意,如果该动作会为用户生成html。更多地描述这些动作的作用,也许你可以用观察者类或delayed_job替换它们? – 2011-04-14 20:53:14

+0

其实我试图创造一个延迟的工作。我想我应该把我的任务放在我的控制器中,然后使用handle_asynchronously:runall。你能帮我这个问题吗?http://stackoverflow.com/questions/5661998/rails-help-creating-a-delayed-job-from-a-rake-file – 2011-04-14 21:04:11

回答

6
def runall 
    [:something, :email, :house].each{|a| send(a)}  
end 

使用Object#send

这一切都是假设这些都是某种形式的私人助手,而不是被调用,以呈现视图等实际控制人的行为,否则我不建议这样做。

+2

优雅的方式来实现,+1 – apneadiving 2011-04-14 20:58:00

3

只是对词汇的缘故:

  • 你有很大的回答以下问题:“我能有它运行的几种方法的行动”

  • 动作被链接到一个视图所以一次执行多个动作是没有意义的

相关问题