Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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 `Model.first(:order=>;';random()';)始终返回相同的对象_Ruby On Rails_Ruby_Activerecord_Random - Fatal编程技术网

Ruby on rails `Model.first(:order=>;';random()';)始终返回相同的对象

Ruby on rails `Model.first(:order=>;';random()';)始终返回相同的对象,ruby-on-rails,ruby,activerecord,random,Ruby On Rails,Ruby,Activerecord,Random,当我尝试这样做时: questions = Array.new 2.times do question = Question.first(:order => 'random()') questions << question end 它返回一个包含两个相同对象的数组,但在我的questions数组中需要两个不同的对象。我做错了什么?您可以尝试创建一个返回随机记录的方法: class Question < ActiveRecord::Base ... de

当我尝试这样做时:

questions = Array.new
2.times do
  question = Question.first(:order => 'random()')
  questions << question
end

它返回一个包含两个相同对象的数组,但在我的
questions
数组中需要两个不同的对象。我做错了什么?

您可以尝试创建一个返回随机记录的方法:

class Question < ActiveRecord::Base

...

  def self.random
    if (c = count) != 0
      find(:first, :offset =>rand(c))
    end
  end

...

end
类问题rand(c))
结束
结束
...
结束
然后使用:

questions = Array.new
2.times do
  question = Question.random
  questions << question
end
questions=Array.new
2.5倍
问题=question.random

问题该错误可能是在执行
问题时出现的。首先
-显然它没有像您预期的那样创建一个新的
问题
。我怀疑您在调用
问题时得到了一个对象。首先
,它只是保留查询以供以后检索。您可以参考此链接获取随机数据记录:
questions = Array.new
2.times do
  question = Question.random
  questions << question
end