当前位置: 首页 > 知识库问答 >
问题:

关联many_manyNoMachodError:nil的未定义方法名称:NilClass

曾嘉荣
2023-03-14

大家好,我刚刚遇到了这个问题,我正在学习教程,我试图在我的文章和类别之间创建多对多关联,所以我通过键入以下内容添加了article\u类别模型:

rails g model article_category article_id:integer category_id:integer

在这个模型里面我输入了

belongs_to :article
belongs_to :category

内部文章。rb:

has_many :article_categories
has_many :categories, through: :article_categories

和内部类别。rb:

has_many :article_categories
has_many :articles, through: :article_categories    

所以我去了控制台:通过输入以下内容进行关联:

Article.all
Article.first 

我检查了文章。类别

#<ActiveRecord::Associations::CollectionProxy []> 

我也试了分类

category.all
category.first

结果是:

category
 => #<Category id: 6, name: "sport", created_at: "2016-04-11 06:41:25", updated_at: "2016-04-11 06:41:25">
article
 => #<Article id: 25, title: "kkkk", description: "lll", created_at: "2016-04-13 07:32:38", updated_at: "2016-04-13 07:32:38", user_id: 21>

所以我试图通过输入以下内容使这篇文章成为此类文章的一部分:

category.articles << article

所以我得到了这个错误:

INSERT INTO `article_categories` (`article_id`, `category_id`, `created_at`, `updated_at`) VALUES (25, 6, '2016-04-18 09:06:58', '2016-04-18 09:06:58')
   (12.9ms)  ROLLBACK
NoMethodError: undefined method `name' for nil:NilClass

这是错误,伙计们,谢谢

共有2个答案

海鸣
2023-03-14

你能试试分类吗。文章ID

对于许多人来说,我认为rails使您能够使用_id来保存id,而不是您想要的整个对象。

然后您可以访问category.articles并检查该文章是否确实已添加

林意蕴
2023-03-14

尝试在连接模型的(article_类别)迁移中添加索引

add_index :article_categories, :article_id
add_index :article_categories, :category_id

如果不让我知道,那应该可以解决问题。

 类似资料:
  • 问题内容: 我正在尝试在python3中编写一个简单的递归函数。在学习OO Java时,我还想编写涉及对象的Python代码。这是我的下面的代码。我提示用户输入一个数字,屏幕应该显示每个小到5的整数。 但是,当我在终端上运行它时,它说:“ NameError:未定义名称’recursive’”。错误如下所示: 是什么导致问题出在这里?我知道如何编写递归函数,给它一个参数,然后使其在终端上运行。但是

  • 我正在尝试将添加到 Devise,但是当我注册一个新用户时,当我推送提交时它会中断。 我已确保运行< code>rake db:migrate并重新启动了我的服务器,但我得到了以下错误: ActiveRecord::StatementInvalid in Devise::RegistrationsController#create NoMethodError: nil:NilClass 的未定义方

  • 问题内容: 我在自学Python,只是在“探索”。Google说datetime是一个全局变量,但是当我尝试在终端中查找今天的日期时,我在问题标题中收到NameError吗? 问题答案: 您需要先导入模块: 之后,它可以工作:

  • 问题内容: 我有以下代码,并在尝试运行它时收到以下错误消息: 我试图让Raspberry Pi在端口17上收到输入时运行HTML脚本: 问题答案: Python的布尔常量是大写的:与以大写字母和分别。 小写变体只是变量的有效免费名称,因此您可以将它们用于任何所需的变量,例如(不建议使用; P)。

  • 我试图做一个基于链接列表和节点的N-Ary树。但是每当我试图给树添加一个新值时,我总是得到: NameError:未定义名称“self” 我使用模块,所以我必须从其他文件导入类。 我在树代码的def addTree(self,value,parent=self.root)中遇到了这个错误 树代码 节点代码 链接列表代码 也谢谢你的帮助,我对Python有点陌生,我不知道我做错了什么。

  • 我得到一个错误,当我试图运行这个简单的脚本: 假设我输入“dude”,我得到的错误是: 我正在运行MacOSX10.9.1,我正在使用安装了Python3.3的PythonLauncher应用程序来运行脚本。