如何解决为什么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 举报,一经查实,本站将立刻删除。