【问题标题】:Rails 3.1: Model Constant in initializer causes warningRails 3.1:初始化程序中的模型常量导致警告
【发布时间】:2011-10-19 18:00:54
【问题描述】:

我已经在初始化程序中修补了 ActsAsTaggableOn 插件的 Tag 类。一切正常,但是我收到了我添加到标签的常量的警告:

config/initializers/acts_as_taggable_on_extensions.rb:

 class Tag < ActiveRecord::Base

   ... some stuff ...

   TAG_TYPES = [:a, :b, :c]

   ... some more stuff ....

 end

警告是:config/initializers/acts_as_taggable_on_extensions.rb:136:警告:已初始化常量 TAG_TYPES

我怎样才能摆脱这个警告?

我正在使用 ruby​​ 1.9.2、Rails 3.1 rc4。

【问题讨论】:

  • Rails 3.1 的最新版本是 rc5,您应该考虑在有更新时立即更新预发布版本。
  • 在我看来,您的文件被多次加载。你能检查一下是不是这样吗?
  • @Aurril:我在 rc5 中的资产管道遇到问题,我回滚到 rc4。
  • @Chirantan:是的,这也是我的怀疑,只是不确定在哪里以及为什么。

标签: ruby-on-rails warnings constants ruby-on-rails-3.1 initializer


【解决方案1】:

试试这个:

TAG_TYPES ||= [:a, :b, :c]

【讨论】:

  • 成功了,谢谢 ;-)。只是想知道为什么它首先加载了两次。
  • 好的,只需检查您期望的值是您在此处指定的值,而不是其他值。在后一种情况下,问题不在于代码已被评估两次,而在于您可能正在重新分配一个预先分配的 const...
  • 这个常量只赋值一次。它的值是正确的。
【解决方案2】:

您可以通过将标签类型添加到 TAG_TYPES 数组中来添加自己的标签类型。

TAG_TYPES << :a << :b << :c
TAG_TYPES.uniq!

【讨论】:

    猜你喜欢
    • 2012-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-24
    • 1970-01-01
    • 2014-07-25
    • 2011-08-29
    相关资源
    最近更新 更多