Where would I store static/constant values in a rails application?

ruby-on-rails-3

Solution

It depends on where you need to access them.

If you need to use them throughout your application, you can put them in `environment.rb`

# environment.rb
#
# other global config info
HELLO_EVERYONE = "hiz"

If you need to access them only inside a specific class, you can define them in that model.

class Test < ActiveRecord::Base
  HELLO_EVERYONE = "hiz"
end

EDIT

The second case (where the constant is defined in the `Test` class), can also be accessed outside of the `Test` class, only it needs to be referenced as `Test::HELLO_EVERYONE`.

This may be helpful in cases where you have a list of items relevant to the domain of that object (like a list of US states) that you might use in a view (e.g. `select_tag :address, :state, options_for_select(Address::STATES)`). Although I might consider wrapping this inside of a class method instead of exposing the internal structure of the class.

class Address< ActiveRecord::Base
  STATES = ["AL", "AK", "AZ", "AR", ...]

  def self.states
    STATES
  end
end

Problem

I have rails app and am wondering the best place to store the constants? For example: ``` HELLO_EVERYONE = "hiz" ``` and then in a few controllers and views: ``` arr_used = [HELLO_EVERYONE] ```

Original source