我有幾個常量是我不想創建數據庫記錄的數組,但我不知道在哪裏存儲常量而不會出現錯誤。哪裏把常量在Rails中
例如
CONTAINER_SIZES = [["20 foot"],["40 foot"]]
我在哪裏可以存儲此,因此所有的模型和控制器訪問呢?
我有幾個常量是我不想創建數據庫記錄的數組,但我不知道在哪裏存儲常量而不會出現錯誤。哪裏把常量在Rails中
例如
CONTAINER_SIZES = [["20 foot"],["40 foot"]]
我在哪裏可以存儲此,因此所有的模型和控制器訪問呢?
我會寫我的方式給你。
class User < ActiveRecord::Base
STATES = {
:active => {:id => 100, :name => "active", :label => "Active User"},
:passive => {:id => 110, :name => "passive", :label => "Passive User"},
:deleted => {:id => 120, :name => "deleted", :label => "Deleted User"}
}
# and methods for calling states of user
def self.find_state(value)
if value.class == Fixnum
Post::STATES.collect { |key, state|
return state if state.inspect.index(value.to_s)
}
elsif value.class == Symbol
Post::STATES[value]
end
end
end
這樣我就可以把它像
User.find_state(:active)[:id]
或
User.find_state(@user.state_id)[:label]
另外,如果我想所有狀態裝載到一個選擇框,如果我不希望一些國家在它(像刪除狀態)
def self.states(arg = nil)
states = Post::STATES
states.delete(:deleted)
states.collect { |key, state|
if arg.nil?
state
else
state[arg]
end
}
end
而且我可以使用它現在喜歡
select_tag 'state_id', User.states.collect { |s| [s[:label], s[:id]] }
但在最後幾天,我找到了,模塊方式更好 – 2010-04-29 09:38:19
我把它們直接放在模型類中。
class User < ActiveRecord::Base
USER_STATUS_ACTIVE = "ACT"
USER_TYPES = ["MANAGER","DEVELOPER"]
end
這就是我所做的。 – 2010-04-29 08:48:16
見http://stackoverflow.com/questions/1107782的 – mckeed 2010-04-29 08:17:23
可能重複http://stackoverflow.com/questions/1107782/wheres-the-best-place-to-define- a-constant-in-a-ruby-on-rails-application – 2010-04-29 08:21:33