【问题标题】:Issue with custom inflections in Ruby on Rails 3.0.3Ruby on Rails 3.0.3 中的自定义变形问题
【发布时间】:2011-01-08 13:16:57
【问题描述】:

我有一个名为 produccion_alternativa 的模型。 我在 config/initializers/inflections.rb 中添加了一个新的变形规则,如下所示:

inflect.irregular('produccion_alternativa', 'producciones_alternativas')

我还有一个名为 productor 的模型与 produccion_alternativa 有关系:

class Productor < ActiveRecord::Base
    has_many :producciones_alternativas


class ProduccionAlternativa < ActiveRecord::Base
    belongs_to :productor

当我尝试获取 productor 的所有 producciones_alternativas 时,我收到此错误:

irb(main):010:0> Productor.first.producciones_alternativas
NameError: uninitialized constant Productor::ProduccionesAlternativa

有什么想法吗?非常感谢

【问题讨论】:

    标签: ruby-on-rails inflection


    【解决方案1】:

    我看到其他几个人也有同样的问题。找不到答案为什么会发生这种情况。所以在此期间你可以试试这个:

    has_many :producciones_alternativas, :class_name => "ProduccionAlternativa"
    

    【讨论】:

      【解决方案2】:

      我也找到了另一个解决方案。我在 inflection.rb 上添加了另一条规则:

      inflect.irregular('ProduccionAlternativa', 'ProduccionesAlternativas')
      inflect.irregular('produccion_alternativa', 'producciones_alternativas')
      

      至少,现在它可以按我的意愿工作了。谢谢。

      【讨论】:

        【解决方案3】:

        您的失败在于您将 has_many 关联中的两个单词复数。你用过:

        has_many :producciones_alternativas
        

        但是基于类名ProduccionAlternativa 的复数是produccion_alternativas,因为只有最后一个单词是复数的!所以这应该有效:

        has_many :produccion_alternativas
        

        在 Rails 控制台中检查单词类型 "your_word".pluralize 的复数形式!

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2013-11-27
          • 2015-06-26
          • 2013-02-21
          • 2012-09-01
          • 1970-01-01
          • 2014-07-27
          • 2012-04-03
          • 1970-01-01
          相关资源
          最近更新 更多