2015-05-09 1 views
1

в рельсах 3.2.12 Я получил этот запрос и он работал отлично:Rails запросов преобразование из 3.2.12 к 4.2.0 dosn't ничего возвращать

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> 

что будет правильный путь?

ответ

1

Правильный путь для создания этого отношения в Rails 4 является:

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

В этом отношении вы можете запускать такие методы, как allcount, или each ...

+0

Я пробовал этот способ 'lesson.questions.order (DB_RANDOM)' ... но его пустой – Felix

+0

ли вы поджарить его с '.all' в конце? Можете ли вы указать, как «DB_RANDOM» и ассоциация «вопросы» базы данных определены в вашей модели? – spickermann

2

В рельсах 4 вы можете получить случайные в почтовых отправлениях

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

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

Ограничение на размещение до и после дает тот же результат.

Если вы используете mysql, тогда используйте функцию RAND.

lesson.question.order("RAND()").limit(limit).all 
Смежные вопросы