English 中文(简体)
在铁路中存储常数
原标题:Store constants in Rails

我来自爪哇的背景,我想知道是否有办法 建立一个保存常数的阶级。

具体针对我的问题,我想知道 如果我可以有类似的东西:

@user.authentications.create(:uid => "12345", :provider => Provider::FACEBOOK)

供应商级存储所有静态常数的位置。 而且, 这是在铁路上的Ruby 这样做的正确方式吗?

Extra Info: I tried the above by having

class Provider
  FACEBOOK = "facebook"
  TWITTER = "twitter"
end

但它给出了错误 :

NameError:
       uninitialized constant Provider
最佳回答

选项 1 (类别变量) :

class Provider
  @@FACEBOOK = "facebook"
  @@TWITTER = "twitter"
end

@user.authentications.create(:uid => "12345", :provider => Provider.FACEBOOK)

在某些情况下,使用类变量受到强烈的抑制。 更好的办法就是使用元巫术:

class Provider
  @FACEBOOK = "facebook"
  @TWITTER = "twitter"

  class << self
    attr_reader :FACEBOOK, :TWITTER
  end
end

@user.authentications.create(:uid => "12345", :provider => Provider.FACEBOOK)
问题回答

If you would like to keep the implementation above

尝试将 provvider:: faCEBOOK 使用双冒号前置前缀

::Provider::FACEBOOK

这设置了一个绝对路径, 所以 Ruby 不想在当前的上下文/ 类/ 控制器中查找常数 。 (我的假设是, 它现在认为常数定义在 < code> User 控制器:: provider:: FACEBOOK 中 ) 。

More Rails-esque

也有许多其他职位要放置常数,

基本上, 在您实际需要的地方设置常数 。 如果您想在任何地方访问这些常数, 请在控制器/ 模式中或 environment.rb 中设置常数 。

如果您在您的模型文件中声明该类, 则该类将被访问。 如果您在 lib 文件中声明, 那么您可以在应用程序中添加一行. rb 文件 。

config.autoload_paths += %W(#{config.root}/lib)




相关问题
rails collection_select vs. select

collection_select and select Rails helpers: Which one should I use? I can t see a difference in both ways. Both helpers take a collection and generates options tags inside a select tag. Is there a ...

SSL slowness in EC2

We ve deployed our rails app to EC2. In our setup, we have two proxies on small instances behind round-robin DNS. These run nginx load balancers for a dynamically growing and shrinking farm of web ...

Auth-code with A-Za-z0-9 to use in an URL parameter

As part of a web application I need an auth-code to pass as a URL parameter. I am currently using (in Rails) : Digest::SHA1.hexdigest((object_id + rand(255)).to_s) Which provides long strings like : ...

RubyCAS-Client question: Rails

I ve installed RubyCAS-Client version 2.1.0 as a plugin within a rails app. It s working, but I d like to remove the ?ticket= in the url. Is this possible?

activerecord has_many :through find with one sql call

I have a these 3 models: class User < ActiveRecord::Base has_many :permissions, :dependent => :destroy has_many :roles, :through => :permissions end class Permission < ActiveRecord::...

Ordering a hash to xml: Rails

I m building an xml document from a hash. The xml attributes need to be in order. How can this be accomplished? hash.to_xml

Text Editor for Ruby-on-Rails

guys which text editor is good for Rubyonrails? i m using Windows and i was using E-Texteditor but its not free n its expired now can anyone plese tell me any free texteditor? n which one is best an ...

How to get SQL queries for each user where env is production

I’m developing an application dedicated to generate statistical reports, I would like that user after saving their stat report they save sql queries too. To do that I wrote the following module: ...