ruby-on-rails - NameError: 未初始化常量 -- activerecord

标签 ruby-on-rails activerecord nameerror uninitialized-constant

我有两个类,Number 和 Freebie:

class Number < ActiveRecord::Base
  belongs_to :account
  has_many :freebies

end

class Freebie < ActiveRecord::Base
  belongs_to :number

  attr_accessible :name, :data

  has_attached_file :data, :path => "freebies/:id_partition/:filename"

  def to_s
    name
  end
end

我所有其他具有 has_many 和 belongs_to 关系的类都可以正常工作,但是当我调用如下内容时:

n = Number.last
n.freebies.create

我收到这个错误:

NameError: uninitialized constant Number::Freeby
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.8/lib/active_record/inheritance.rb:111:in `compute_type'
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.8/lib/active_record/reflection.rb:172:in `klass'
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.8/lib/active_record/associations/collection_association.rb:148:in `transaction'
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.8/lib/active_record/associations/collection_association.rb:431:in `create_record'
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.8/lib/active_record/associations/collection_association.rb:119:in `create'
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/activerecord-3.2.8/lib/active_record/associations/collection_proxy.rb:46:in `create'
    from (irb):20
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.8/lib/rails/commands/console.rb:47:in `start'
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.8/lib/rails/commands/console.rb:8:in `start'
    from /Users/Robby/.rvm/gems/ruby-1.9.2-p320/gems/railties-3.2.8/lib/rails/commands.rb:41:in `<top (required)>'
    from script/rails:6:in `require'
    from script/rails:6:in `<main>'

我在使用 Freebie 类时遇到了一些其他问题,因为它以 ie 结尾,而 Rails 试图制作单数版本“Freeby”而不是 Freebie。不过,我不确定为什么这不起作用。

最佳答案

Rails 会自动尝试从单数形式推断单词的复数形式,反之亦然。您可能想要考虑覆盖默认的变形规则。

尝试类似于 this Stackoverflow question 中的答案的操作.

关于ruby-on-rails - NameError: 未初始化常量 -- activerecord,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13497845/

相关文章:

ruby-on-rails - 设计使用用户名而不是电子邮件进行身份验证

ruby-on-rails - SimpleForm+ClientSideValidations+bootstrap - 表单上未进行验证 - 接受所有输入

python - 我该如何处理这个回溯名称错误?这是我的第一个脚本

python-3.x - NameError:未定义全局名称 'long'

ruby-on-rails - Rails:在Docker中使用Figaro定义的环境变量

ruby-on-rails - Rails google-ads-ruby 设置

ruby-on-rails - 为什么覆盖 ActiveRecord::Base.initialize 错误?

MySQL:插入错误 "Cannot be NULL"-- DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP

ruby-on-rails - 按子属性过滤父项,但预先加载所有子项

python-3.x - NameError:全局名称 'PermissionError' 未定义(python 2.x)