使变量可供控制器中的多个操作访问

时间:2015-03-05 14:06:56

标签: ruby-on-rails ruby

我在控制器动作

中有一组布尔符号

这些目前采用以下格式进行1次操作

def my_action
  setup_stages = [:data_entry_completed, :data_validation_completed]
  setup_stages.each do |stage|
    do stuff
  end
end 

我注意到我需要在另一个动作中使用这些符号,但不想复制它们。有没有办法让这个列表可以被控制器中的多个动作访问,这样我就可以迭代它们而不需要两次列表?

2 个答案:

答案 0 :(得分:6)

只需将其定义为constant

class MyController < AplicationController

  SETUP_STAGES = [:data_entry_completed, :data_validation_completed]

答案 1 :(得分:0)

我个人将其定义为实例变量:

class MyClass 

  def initialize 
    @setup_stages = [:data_entry_completed, :data_validation_completed]
  end

  def do_action 
    @setup_stages.each do |stage|
       # do stuff
    end
  end

  def show_stages
    puts @setup_stages.to_s
  end

end

x = MyClass.new
x.do_action
x.show_stages

常量也是定义它的好方法,但不应该改变,所以如果出于任何原因你想要动态地向数组中添加其他选项,你就可以用实例变量来做这个。