Нетерпеливая загрузка первой записи полиморфной ассоциации

#ruby-on-rails #ruby #postgresql

#ruby-on-rails #ruby #postgresql

Вопрос:

Я пытаюсь настроить свой сайт на более быструю работу, но у меня возникают проблемы с настройкой ассоциации.

 class Post < ActiveRecord::Base
 has_many :photos, as: :annotatable
end

class Photo < ActiveRecord::Base
 belongs_to :annotatable, polymorphic:true
end
 

Я хочу только загружать первую фотографию для каждого сообщения, но сталкиваюсь с синтаксическими ошибками из-за того, что она полиморфна.

Вот что я пробовал:

   has_many :primary_photo, as: :annotable, -> { order('photos.sort_order ASC').limit(1) }, class_name: 'Photo'
 

Ошибка, которую я получаю, когда пытаюсь выполнить вышеуказанное:

syntax error, unexpected ',', expecting => ...r('sort_order ASC').limit(1) }, class_name: 'Photo' ... ^

И затем: Post.includes(:primary_photo)

Есть идеи о том, как заставить это работать?

Комментарии:

1. Какое сообщение об ошибке вы получаете? Вы, вероятно, хотите добавить .limit(1) в свой лямбда.

2. @Daiku — Обновлено с учетом ошибки, которую я получаю, и вашего предложения

Ответ №1:

Сигнатура метода ожидает, что параметры будут идти после области видимости. Попробуйте сделать это так:

 has_many :primary_photo, -> { order('photos.sort_order ASC').limit(1) }, class_name: 'Photo', as: :annotable