#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