为什么RailsAdmin加载我的编辑视图这么慢?

如何解决为什么RailsAdmin加载我的编辑视图这么慢?

我正在使用gem rails_admin构建我的Rails网站的管理界面。我的问题是,当我尝试编辑FirstJob模型时,加载视图需要大约15+秒。

经过一些测试,似乎导致此巨大加载时间的字段为study_domains,因为当我将其从编辑操作中删除时,加载时间会急剧减少到一秒钟左右。

为了提供一些背景信息,在我的应用中,我有多个作业,并且每个作业可以通过名为skilltags的表来拥有多个学习领域,该表是不同study_domain和{{1 }}到不同的对象,这是关联:

first_job.rb,internship.rb和student_job.rb

field_of_study

company.rb

belongs_to :company
belongs_to :company_logo,class_name: "Document",optional: true

has_many :skilltags,:dependent => :destroy
has_many :hard_skills,:through => :skilltags
has_many :study_domains,-> { distinct },:through => :skilltags
has_many :field_of_studies,:through => :skilltags
has_many :favourites,:dependent => :destroy
has_many :candidacies
has_many :users_candidacy,class_name: 'User',:through => :candidacies,source: :user
has_many :users_favourite,:through => :favourites,source: :user
has_many :documents,:dependent => :destroy
has_one :address,:dependent => :destroy

skilltag.rb

has_many :first_jobs,-> {where(deleted: false)}
has_many :internships,-> {where(deleted: false)}
has_many :student_jobs,-> {where(deleted: false)}
has_many :alerts
has_many :documents,:dependent => :destroy
has_many :articles
has_many :testimonies
has_one :profile
has_one :user,:through => :profile
has_one :address

has_many :companies,class_name: "Company",foreign_key: "parent_id"
belongs_to :parent,optional: true

belongs_to :logo,optional: true
belongs_to :main_image,optional: true
belongs_to :banner_image,optional: true

serialize :list_videos,Array
serialize :featured_characteristics,Array
serialize :featured_pictures,Array

study_domain.rb

belongs_to :user,optional: true
belongs_to :soft_skill,optional: true
belongs_to :hard_skill,optional: true
belongs_to :first_job,optional: true
belongs_to :internship,optional: true
belongs_to :student_job,optional: true
belongs_to :study_domain,optional: true
belongs_to :field_of_study,optional: true

soft_skill.rb

has_many :field_of_studies
has_many :skilltags,:dependent => :destroy
has_many :first_jobs,through: :skilltags
has_many :internships,through: :skilltags

hard_skill.rb

has_one :skilltag

field_of_study.rb

has_many :skilltags
has_many :users,:through => :skilltags
has_many :first_jobs,:through => :skilltags

experience.rb

has_many :experiences
belongs_to :study_domain,optional: true
has_many :skilltags
has_many :first_jobs,:through => :skilltags
has_many :internships,:through => :skilltags

rails_admin.rb

belongs_to :school,optional: true
belongs_to :campus,optional: true
has_many :experience_tags,:dependent => :destroy
has_many :years,through: :experience_tags

我不知道这里是否有足够的详细信息,但是如果您有任何问题,我会用更多信息来更新我的问题。

解决方法

通过查看输出,主要问题似乎是实习,我花了将近9秒钟来执行SQL,我敢打赌渲染时间是您视图的一半。 您能否使用此视图中涉及的其他关联来更新您的问题?实习,第一份工作,经验,技能标签。

Rails管理员应该限制这些form_filtering_multiselect上的记录数,但似乎并没有这样做。

此外,您可能还想探索将视图拆分为多个选项卡的可能性,从而添加新的自定义Rails管理员操作。

更新

我将您之前发布的日志添加到this gist作为参考。

在日志中,最昂贵的查询是要获得实习机会的查询,但是您说您正在编辑first_job模型,并且在该模型中没有实习关系。 感谢您的合作,但如果您也可以为FirstJob模型发布rails_admin,因为我不明白为什么以及如何加载这些实习机会。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?