如何使用ROR管理项目中的项目范围常量?

时间:2011-12-09 06:10:10

标签: ruby-on-rails ruby constants

LIB / constant.rb

module Constant

  BANQUET_TYPE_OF_OFFER = [['Narrow By Offer Type',''], ["A la Carte", "A la Carte"],

  ["Alcohol Offer", "Alcohol Offer"], ["Buffet", "Buffet"], ["Brunch", "Brunch"], 

  ["Happy Hours", "Happy Hours"], ["Set Menu", "Set Menu"],["Banquets", "Banquets" ]]

end

application_controller.rb

class ApplicationController < ActionController::Base

    include Constant

end

视图/宴会/ banquet.html.haml

= f.select_tag "type_of_offer", options_for_select(Constant::BANQUET_TYPE_OF_OFFER, 
@selected), :name => "banquet[type_of_offer][]", :multiple => true

我在rails应用程序中创建了很多常量,比如java常量。这是最佳做法还是不行?还有其他任何解决方案吗?

1 个答案:

答案 0 :(得分:2)

正如@Batkins所指出的,你不需要在你的班级中包含该模块。

当归结为常量时,它归结为使用定义为Ruby的常量与定义为YAML的偏好。

理想情况下,BANQUET_TYPE_OF_OFFER将在模型中定义,它更有意义,而不是在全球位置。如果您必须在模型之外使用它,请考虑将其移至config/initializers/而不是lib