为什么只有在rails 3.2.8中的一个协会“未初始化的常量”?

时间:2012-08-28 03:52:10

标签: ruby-on-rails ruby-on-rails-3

发票项目是我们的rails 3.2.8 app中的模型。它的定义是:

class InvoiceItem < ActiveRecord::Base 

  belongs_to :invoice
  belongs_to :quote_test_item, :class_name => 'QuoteTestItem'
  belongs_to :lease_usage_record, :class_name => 'LeaseUsageRecord'

  validates :lease_usage_record_id, :uniqueness => { :scope => :invoice_id }, :unless => "lease_usage_record_id.nil?"

end

有3个协会。如果我是发票项目对象。 i.quote_test_item将创建错误(在rails控制台中):

irb(main):037:0> i.quote_test_item
NameError: uninitialized constant InvoiceItem::quote_test_item
我是:

irb(main):038:0> i
=> #<InvoiceItem id: 6, invoice_id: 6, lease_usage_record_id: nil, created_at: "2012-07-25 19:28:37", updated_at: "2012-07-25 19:28:37", quote_test_item_id: 1>

但i.invoice和i.lease_usage_record都经历过,并没有造成任何错误。例如:

irb(main):036:0> i.lease_usage_record
=> nil

为什么只有i.quote_test_item创建错误?非常感谢。

1 个答案:

答案 0 :(得分:2)

确保您已执行所有迁移。您可能还想检查您的QuoteTestItem(顺便说一句,您不必在推断后指定:classname)来检查您是否有相应的has_one :invoice_item或{ {1}},取决于您的建模方式。