1

Invoice item は Rails 3.2.8 アプリのモデルです。その定義は次のとおりです。

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 が請求書項目オブジェクトの場合。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 作成エラーのみが発生するのはなぜですか? 本当にありがとう。

4

1 に答える 1

2

すべての移行を実行したことを確認してください。また、モデリング方法に応じて、対応するまたはがあるかどうかを確認QuoteTestItemするために、 (ちなみに、:classname推論されているため を指定する必要はありません) かどうかを確認することもできます。has_one :invoice_itemhas_many :invoice_items

于 2012-08-28T04:29:41.237 に答える