Rails查询转换从3.2.12到4.2.0 dosn不返回任何内容

时间:2015-05-09 23:02:56

标签: ruby-on-rails ruby ruby-on-rails-4

in rails 3.2.12我已经得到了这个查询并且工作正常:

lesson.questions.find :all, :order => DB_RANDOM, :limit => limit

我已经做到了这一点,但我没有撤回任何事情

lesson.questions.find().order("DB_RANDOM").limit(:limit).all

我只是得到了回复:

2015-05-10 00:55:52 INFO undefined method `find' for "#<ActiveRecord::Associations::CollectionProxy []>":String

也有这个:

lesson.questions.find().order("DB_RANDOM").limit(:limit).all

但后来我明白了:

 undefined method `question' for #<Lesson:0x00000006a8b550>

什么是正确的方式?

2 个答案:

答案 0 :(得分:2)

在rails 4中,您可以通过

随机获得postgres
lesson.question.order("RANDOM()").limit(limit).all

              or 
lesson.question.limit(limit).order("RANDOM()").all

在产生相同结果之前和之后设置限制。

如果您使用的是mysql,请使用RAND函数。

lesson.question.order("RAND()").limit(limit).all

答案 1 :(得分:1)

在Rails 4中创建该关系的正确方法是:

lesson.questions.order(DB_RANDOM).limit(limit)

在该关系中,您可以运行allcounteach等方法...