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>
什么是正确的方式?
答案 0 :(得分:2)
在rails 4中,您可以通过
随机获得postgreslesson.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)
在该关系中,您可以运行all
,count
或each
等方法...