И если (при определенных обстоятельствах) вы начнете получать warning: redefining constant Struct…
при использовании ответа Lexun, тогда добавление условного unless Struct::const_defined? 'DashItem'
может помочь.
def index
@dashboard_items = []
# Set the name of your struct class as the first argument
Struct.new('DashItem', :name, :amount, :moderated) unless Struct::const_defined? 'DashItem'
...
# Then when you want to create an instance of your structure
# you can access your class within the Struct class
@dashboard_items << Struct::DashItem.new(c.to_s, obj.count, obj.moderated)
end
Конечно, важно помнить, что указанное предупреждение может быть действительным, и вы можете переопределять то, что вы на самом деле не хотите переопределять. Поэтому убедитесь, что вы знаете, что делаете, прежде чем использовать вышеуказанный способ, чтобы заставить замолчать предупреждение (и обойти переопределение).