Rails:NameError:未初始化的常量OrderItem

车型/ order_item.rb

class OrderItem < ActiveRecord::Base belongs_to :item belongs_to :order belongs_to :user end 

车型/ order.rb

  class Order < ActiveRecord::Base has_many :order_item end 

现在,我使用rails console测试它们。 当我键入OrderItem ,它抛出了

 NameError: uninitialized constant OrderItem 

更新

我在rails console

 2.1.3 :021 > reload! Reloading... => true 2.1.3 :022 > Order => Order(id: integer, user_id: integer, created_at: datetime, updated_at: datetime, status: integer) 2.1.3 :023 > Item => Item(id: integer, status: integer, name: string, price: integer, descript: text, created_at: datetime, updated_at: datetime, cover_file_name: string, cover_content_type: string, cover_file_size: integer, cover_updated_at: datetime, cate_id: integer) 2.1.3 :024 > User => User(id: integer, email: string, encrypted_password: string, created_at: datetime, updated_at: datetime) 2.1.3 :025 > OrderItem NameError: uninitialized constant OrderItem from (irb):25 from /Users/Coda/.rvm/gems/ruby-2.1.3@rails416/gems/railties-4.2.3/lib/rails/commands/console.rb:110:in `start' from /Users/Coda/.rvm/gems/ruby-2.1.3@rails416/gems/railties-4.2.3/lib/rails/commands/console.rb:9:in `start' from /Users/Coda/.rvm/gems/ruby-2.1.3@rails416/gems/railties-4.2.3/lib/rails/commands/commands_tasks.rb:68:in `console' from /Users/Coda/.rvm/gems/ruby-2.1.3@rails416/gems/railties-4.2.3/lib/rails/commands/commands_tasks.rb:39:in `run_command!' from /Users/Coda/.rvm/gems/ruby-2.1.3@rails416/gems/railties-4.2.3/lib/rails/commands.rb:17:in `' from /Users/Coda/Desktop/code/ruby_pra/shop/bin/rails:8:in `' from /Users/Coda/.rvm/rubies/ruby-2.1.3/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require' from /Users/Coda/.rvm/rubies/ruby-2.1.3/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_require.rb:54:in `require' from -e:1:in `' 

NameError:未初始化的常量OrderItem

has_many关联名称应为plural ,因此order.rb has_many :order_items更改为has_many :order_items in order.rb

 #order.rb class Order < ActiveRecord::Base has_many :order_items #plural end 

更新:

github上查看你的代码, order_item.rb之间有一个空格 ,即文件名中的( order_item .rb )( app/models/order_item .rb )。 将其更改为order_item.rb

根据评论,并删除任何疑问,这是我对代码的期望:

 #app/models/order.rb class Order < ActiveRecord::Base belongs_to :user #-> the order belongs to user, so if order_items belong to order, they belong to user, right? has_many :order_items has_many :items, through: :order_items end #app/models/order_item.rb class OrderItem < ActiveRecord::Base #table name "order_items" #columns id | item_id | order_id | created_at | updated_at belongs_to :item belongs_to :order end 

这是一个典型的has_many :through关系,因为我相信你已经知道了。

-

使用Pavan的最新答案; 上面的内容可以让您了解模型所需的代码类型。