Rails:NameError:未初始化的常量 OrderItem [英] Rails: NameError: uninitialized constant OrderItem
问题描述
models/order_item.rb
class OrderItem < ActiveRecord::Base
belongs_to :item
belongs_to :order
belongs_to :user
end
models/order.rb
class Order < ActiveRecord::Base
has_many :order_item
end
现在,我使用 rails 控制台
测试这些.当我输入 OrderItem
时,它抛出了
Now, I test those by using rails console
. When I typed OrderItem
, it threw
NameError: uninitialized constant OrderItem
更新
我在 rails 控制台
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 `<top (required)>'
from /Users/Coda/Desktop/code/ruby_pra/shop/bin/rails:8:in `<top (required)>'
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 `<main>'
推荐答案
NameError: 未初始化的常量 OrderItem
NameError: uninitialized constant OrderItem
has_many
的关联名称应该是plural
,所以改变has_many :order_item
到 has_many :order_items
在 order.rb
The association name for has_many
should be plural
, so change has_many :order_item
to 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
Looking into your code on github, there is a space between order_item
and .rb
i.e., (order_item .rb
) in the filename(app/models/order_item .rb
). Change it to order_item.rb
这篇关于Rails:NameError:未初始化的常量 OrderItem的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!