我在控制器动作
中有一组布尔符号这些目前采用以下格式进行1次操作
def my_action
setup_stages = [:data_entry_completed, :data_validation_completed]
setup_stages.each do |stage|
do stuff
end
end
我注意到我需要在另一个动作中使用这些符号,但不想复制它们。有没有办法让这个列表可以被控制器中的多个动作访问,这样我就可以迭代它们而不需要两次列表?
答案 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
常量也是定义它的好方法,但不应该改变,所以如果出于任何原因你想要动态地向数组中添加其他选项,你就可以用实例变量来做这个。