我们在rails admin中有一个模型Ticket
的列表视图,加载速度非常慢。
class Ticket < ActiveRecord::Base
belongs_to :crew
end
它很慢的原因是我们通过访问其他相关模型的方法crew
显示故障单的rails_admin_pretty_print
关系。
class Crew < ActiveRecordBase
belongs_to :pool
belongs_to :leader
def rails_admin_pretty_print
"leader : #{leader.name} at time #{pool.datetime}"
end
end
我想在初始查询中急切加载所有这些对象,以加快请求速度。类似的东西:
config.model "Ticket" do
object_label_method :rails_admin_pretty_print
list do
field :crew, includes(:pool, :leader)
end
end
我在rails admin文档中找不到任何方法。有没有办法做到这一点?
答案 0 :(得分:0)
如果设置了default_scope
模型,Rails Admin会将其用于列表视图。显然它并不理想(除非这非常重要且值得解决),但您可以在Crew
模型中设置默认范围,如下所示:
class Crew < ActiveRecord::Base
default_scope { includes(:pool, :leader) }
# more crew stuff
end
就像我说的那样,这并不理想,因为每次要访问unscoped
模型时都必须使用Crew
,而不包括:pool
和leader
。
Crew.unscoped.where(id: [1,2,4])