Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.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 未定义的方法`<<';对于#<;回答:ActiveRecord_关系:0x007fada31c7430>;_Ruby On Rails_Ruby_Model - Fatal编程技术网

Ruby on rails 未定义的方法`<<';对于#<;回答:ActiveRecord_关系:0x007fada31c7430>;

Ruby on rails 未定义的方法`<<';对于#<;回答:ActiveRecord_关系:0x007fada31c7430>;,ruby-on-rails,ruby,model,Ruby On Rails,Ruby,Model,嗨,我创建了一个控制器游戏来显示问答游戏 我被您试图附加到@answers结果的阻止-这是一个ActiveRecord关系,您无法将数据附加到该数组 将.添加到行末尾的a,在该行中设置@answers以允许附加到数组中 @answers = Answer.where.not(id: question.answer_id).limit(2).order("RANDOM()").to_a 您正试图附加到@answers结果-这是一个ActiveRecord关系,您无法将数据附加到该数组 将.添加

嗨,我创建了一个控制器游戏来显示问答游戏


我被您试图附加到
@answers
结果的
阻止-这是一个ActiveRecord关系,您无法将数据附加到该数组

.添加到行末尾的a
,在该行中设置
@answers
以允许附加到数组中

 @answers = Answer.where.not(id: question.answer_id).limit(2).order("RANDOM()").to_a

您正试图附加到
@answers
结果-这是一个ActiveRecord关系,您无法将数据附加到该数组

.添加到行末尾的a
,在该行中设置
@answers
以允许附加到数组中

 @answers = Answer.where.not(id: question.answer_id).limit(2).order("RANDOM()").to_a

mtrolle的答案可能是正确的,但我怀疑为什么默认情况下,
ActiveRecord::Relation
没有作为数组返回。(布罗伊斯塔泽在评论中也提到了这一点。)

我也注意到我的本地设置存在同样的问题,但这都是由于另一个问题造成的。我在这里分享这个,以防你也碰巧使用MySQL

Answer.where.not(id: question.answer_id).limit(2).order("RANDOM()")
返回一个
ActiveRecord::Relation
对象。它转换为以下SQL:

SELECT `answers`.* FROM `answers` WHERE (id != ID) ORDER BY RANDOM() LIMIT 2
当我尝试在MySQL中运行相同的程序时,我得到:

ERROR 1305 (42000): FUNCTION database.RANDOM does not exist
显然MySQL没有
RANDOM()
函数,而是使用

转换
ActiveRecord
查询时,相应地向我返回了正确的数组:

Answer.where.not(id: question.answer_id).limit(2).order("RAND()")

mtrolle的答案可能是正确的,但我怀疑为什么默认情况下,
ActiveRecord::Relation
没有作为数组返回。(布罗伊斯塔泽在评论中也提到了这一点。)

我也注意到我的本地设置存在同样的问题,但这都是由于另一个问题造成的。我在这里分享这个,以防你也碰巧使用MySQL

Answer.where.not(id: question.answer_id).limit(2).order("RANDOM()")
返回一个
ActiveRecord::Relation
对象。它转换为以下SQL:

SELECT `answers`.* FROM `answers` WHERE (id != ID) ORDER BY RANDOM() LIMIT 2
当我尝试在MySQL中运行相同的程序时,我得到:

ERROR 1305 (42000): FUNCTION database.RANDOM does not exist
显然MySQL没有
RANDOM()
函数,而是使用

转换
ActiveRecord
查询时,相应地向我返回了正确的数组:

Answer.where.not(id: question.answer_id).limit(2).order("RAND()")

令人惊讶的是,默认情况下,这种关系将缺少的方法委托给
委托给a
。那么为什么它在这种情况下失败了呢?好的,进行了一些深入的研究,似乎这种委托并不像只使用
method\u missing
那么简单,因为有些方法需要委托给关系klass。委托逻辑可以在这里找到:@mtrolle I test with
to_a
,它可以工作。为什么在其他代码上我们不使用它,而且它可以工作?令人惊讶的是,默认情况下,这种关系会将缺少的方法委托给
委托给\u a
。那么为什么它在这种情况下失败了呢?好的,进行了一些深入的研究,似乎这种委托并不像只使用
method\u missing
那么简单,因为有些方法需要委托给关系klass。委托逻辑可以在这里找到:@mtrolle I test with
to_a
,它可以工作。为什么在其他代码上我们不使用这个,它可以工作?你的意思是我将
RANDOM
更改为
RAND
?但它再次破坏了我代码中的一个错误。这对你合适吗?你是说我把
RANDOM
改成
RAND
?但它再次破坏了我代码中的一个错误。这对你合适吗?