Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails:NameError:未初始化的常量OrderItem_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails Rails:NameError:未初始化的常量OrderItem

Ruby on rails Rails:NameError:未初始化的常量OrderItem,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,型号/订单项目.rb class OrderItem < ActiveRecord::Base belongs_to :item belongs_to :order belongs_to :user end class Order < ActiveRecord::Base has_many :order_item end 更新 我是在rails控制台中完成的 2.1.3 :021 > reload! Reloading...

型号/订单项目.rb

class OrderItem < ActiveRecord::Base    
  belongs_to :item
  belongs_to :order 
  belongs_to :user
end
 class Order < ActiveRecord::Base   
     has_many :order_item
 end
更新 我是在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>'
2.1.3:021>重新加载!
重新加载。。。
=>正确
2.1.3:022>订单
=>顺序(id:integer,用户id:integer,创建时间:datetime,更新时间:datetime,状态:integer)
2.1.3:023>项目
=>项目(id:integer,状态:integer,名称:字符串,价格:integer,描述:文本,创建时间:datetime,更新时间:datetime,封面文件名称:字符串,封面内容类型:字符串,封面文件大小:整数,封面更新时间:datetime,类别id:integer)
2.1.3:024>用户
=>用户(id:integer,电子邮件:string,加密密码:string,创建时间:datetime,更新时间:datetime)
2.1.3:025>订单项
NameError:未初始化的常量OrderItem
起始(irb):25
来自/Users/Coda/.rvm/gems/ruby-2.1。3@rails416/gems/railties-4.2.3/lib/rails/commands/console.rb:110:in'start'
来自/Users/Coda/.rvm/gems/ruby-2.1。3@rails416/gems/railties-4.2.3/lib/rails/commands/console.rb:9:in'start'
来自/Users/Coda/.rvm/gems/ruby-2.1。3@rails416/gems/railties-4.2.3/lib/rails/commands/commands\u tasks.rb:68:in'console'
来自/Users/Coda/.rvm/gems/ruby-2.1。3@rails416/gems/railties-4.2.3/lib/rails/commands/commands\u tasks.rb:39:in'run\u command!'
来自/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`'
来自/Users/Coda/.rvm/rubies/ruby-2.1.3/lib/ruby/site\u ruby/2.1.0/rubygems/core\u ext/kernel\u require.rb:54:in“require”
来自/Users/Coda/.rvm/rubies/ruby-2.1.3/lib/ruby/site\u ruby/2.1.0/rubygems/core\u ext/kernel\u require.rb:54:in“require”
from-e:1:in`'
NameError:未初始化的常量OrderItem

has\u many
关联名称应为
复数,因此将
has\u many:order\u项目
更改为
has\u many:order\u项目

#order.rb
class Order < ActiveRecord::Base   
  has_many :order_items #plural
end
#order.rb
类顺序
更新:


查看您在github上的代码,在
order\u item
.rb
之间有一个空格,即文件名(
app/models/order\u item.rb
)中的(
order\u item.rb
)。根据评论将其更改为
order\u item.rb

,为了消除任何疑问,以下是我对代码的期望:

#order.rb
class Order < ActiveRecord::Base   
  has_many :order_items #plural
end
#app/models/order.rb
类顺序订单属于用户,所以如果订单项目属于订单,它们属于用户,对吗?
有很多:订购物品
有多个:项目,通过::订购项目
结束
#app/models/order_item.rb
类OrderItem
这是一种典型的关系,我相信你也知道

--


使用Pavan的最新答案;以上内容应该可以让您了解您可以从模型中获得的代码类型。

我修改了它,并且我还检查了其他
的代码类型。但它仍然抛出了相同的错误。@CodaChang你重新加载控制台了吗?@CodaChang你能用代码更新ypur问题吗?你在控制台中做什么,以及完整的错误消息。请。@CodaChang奇怪!你的代码看起来不错。你能试着打开另一个标签,打开rails控制台,然后再试一下吗?哦,天哪,谢谢。无论如何,这是一个令人尴尬的错误,非常感谢。现在我刚开始创建一对多结构,是的,我想我应该修改它并使用
has\u many:through
。谢谢
#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