Преднатяг с предельными рельсами - PullRequest
0 голосов
/ 14 февраля 2019

Как можно предварительно загрузить ассоциацию с лимитом в Rails?

Например:

class Comment < ActiveRecord::Base
 belongs_to :post
end

class Post < ActiveRecord::Base
 has_many :comments
end

Это прекрасно работает:

Post.all.preload(:comments)

Но как я могутолько предварительная загрузка один КОММЕНТАРИЙ для каждого POST.(В идеале один СЛУЧАЙНЫЙ КОММЕНТАРИЙ для каждого ПОЧТА)

Примерно так:

Post.all.preload(:comments.limit(1))

1 Ответ

0 голосов
/ 14 февраля 2019

Вы можете создать пользовательские ассоциации ниже, с порядком случайности и ограничением 1 примечанием: если вы используете mysql, измените RANDOM () на RAND ()

class Post < ActiveRecord::Base
 has_many :comments
 has_one  :random_comment, -> { order("RANDOM()").limit(1) }, class_name: "Comment"
end

, тогда вы можете сделать

Post.all.preload(:random_comment)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...