【发布时间】:2013-07-02 20:42:25
【问题描述】:
我正在运行 Rails 4。
我有一个名为 Challenge 的模型,在我的数据库中,我以 0-4 的形式存储每个挑战的 status。
但是 0-4 不是很语义化,所以我想定义一些变量(我假设是常量),以便在任何控制器或视图中我都可以通过调用常量来访问数字:
# Challenge.rb
class Challenge < ActiveRecord::Base
SUGGESTED = 0
APPROVED = 1
OPEN = 2
VOTING = 3
CLOSED = 4
end
我想在我的视图中访问这些:
# challenge/_details.html.erb
<% if @challenge.status == CLOSED %>
Challenge is closed, broheim!
<% end %>
但我的视图不想渲染。
uninitialized constant ActionView::CompiledTemplates::CLOSED
设置我的状态变量以便在我需要它们的任何地方都可以访问它们的最佳方法是什么? (即存在@challenge 变量的任何地方)
【问题讨论】:
-
在这种情况下,我建议您使用哈希作为常量。为什么?因为它会减少模型中不同常数的数量。类似:
STATUSES = { suggested: 0, approved: 1, open: 2, etc: .. }并像Challenge::STATUSES.approved一样访问它
标签: ruby-on-rails ruby constants