Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/52.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 未定义的方法'first';对于nil:nil类Ruby_Ruby On Rails_Has Many Through - Fatal编程技术网

Ruby on rails 未定义的方法'first';对于nil:nil类Ruby

Ruby on rails 未定义的方法'first';对于nil:nil类Ruby,ruby-on-rails,has-many-through,Ruby On Rails,Has Many Through,我对这个错误感到困惑。我在没有任何“第一”的情况下得到了它 调用错误的行如下所示: = @wiki.creator.name 我的wiki有很多用户,我的用户也有很多wiki,通过一个名为Relationships的表(带有属性:wiki\u id、:user\u id、:creator\u created)。Creator是我在wiki模型中定义的方法: has_many :relationships has_many :users, through: :relationships def

我对这个错误感到困惑。我在没有任何“第一”的情况下得到了它

调用错误的行如下所示:

= @wiki.creator.name
我的wiki有很多用户,我的用户也有很多wiki,通过一个名为Relationships的表(带有属性:wiki\u id、:user\u id、:creator\u created)。Creator是我在wiki模型中定义的方法:

has_many :relationships
has_many :users, through: :relationships

def creator
  self.relationships.find_by(:creator_created == true).user
end
这条线昨天还在工作,我没有做任何应该改变它的事情。但现在我得到了“nil的未定义方法‘first’:Nilclass。”

我已经检查过了,@wiki及其相关关系不是零,所以我不知道什么是

有什么想法吗?

基本上
find_by()
首先在内部调用
,这可能是错误的根源


不确定您为什么会得到
nil
,因为您的
find\u by
应该解析为
where(false)
,这应该仍然是一个有效的对象,但请尝试按照评论者的建议修复它。

Stacktrace请!顺便说一句:
find\u by(:creator\u created==true)
无效。应该是
find\u by(creator\u created:true)
发生这种情况是因为
self.relationships.find\u by(:creator\u created==true)
找不到任何与具有指定条件的对象相关的关系对象。它确实返回nil,然后您尝试在nil对象上调用一个方法(
.user
,在您的情况下),谢谢BroiSatse!出于某种原因,这段代码已经在其他页面上运行了好几个星期,但修改它似乎解决了我的问题。Yoshiji先生,我很感谢你的解释,但问题是用户不是零,我无论如何都会遇到这个错误@EllenW-这并不是说它对你的问题有任何影响,只是为了你的总体理解-你稍微误解了@MrYoshiji的评论。他说你的
find_by()
返回了
nil
,然后你试图在
nil
上调用
user
方法,也就是说,你实际上是在调用
nil.user