ruby-on-rails - 用于 ListView 的Rails Admin Eager加载关系

标签 ruby-on-rails eager-loading rails-admin

我们在rails admin中有一个模型Ticket的 ListView ,加载非常慢。

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文档中找不到任何方法来执行此操作。有没有办法做到这一点?

最佳答案

如果设置了模型的default_scope,Rails Admin会将其用于 ListView 。显然这并不理想(除非这非常重要且值得解决),但是您可以在Crew模型中设置默认范围,如下所示:

class Crew < ActiveRecord::Base
  default_scope { includes(:pool, :leader) }

  # more crew stuff
end

就像我说的那样,这是不理想的,因为您每次要访问unscoped模型时都必须使用Crew而不包含:poolleader
Crew.unscoped.where(id: [1,2,4])

关于ruby-on-rails - 用于 ListView 的Rails Admin Eager加载关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22332877/

相关文章:

sql - "filtering"急切加载数据时出现问题

c# - 包含路径表达式必须引用在类型上定义的导航属性。

ruby-on-rails - 如何在 rails_admin 中自定义编辑和更新操作

ruby-on-rails - 在 Rails Admin 中将字段添加到 'new' View

ruby-on-rails - Rails_Admin 相关的下拉菜单

ruby-on-rails - 在 Rails 3.2 的数据库中实现数据更新时出错

ruby-on-rails - rails : Render collection partial: Getting size of collection inside partial

ruby-on-rails - 无效 URI - 如何防止 URI::InvalidURIError 错误?

.net - 在此 Entity Framework 代码中,在我的 IObjectSet 对象上找不到 Include(..) 方法是什么?

python - Django 中的cache.fetch?