渴望加载多态关联的第一条记录

时间:2014-06-23 18:29:51

标签: 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 个答案:

答案 0 :(得分:1)

方法签名期望选项在范围之后。试试这样:

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