显示有很多关联 activeadmin rails 在暂存中不工作但在本地和开发中工作正常
Display has to many association activeadmin rails not working in staging but works fine in local and development
我的用户可以有很多身份(取决于他们是使用 facebook、google 还是我的网站登录)。在 ActiveAdmin 中显示身份我有以下代码。
ActiveAdmin.register User do
menu label: 'Subscribers'
ActiveAdmin.register Identity do
belongs_to :user
end
index do
selectable_column
column :email
column :current_sign_in_at
column :sign_in_count
column :created_at
column "Sign-up Provider", :identities do |user|
ul do
user.identities.collect do |identity|
li do
if identity.provider == "gplus"
"Google"
else identity.provider == "facebook"
identity.provider.capitalize
end
end
end
"Self"
end
end
actions
end
form do |f|
f.inputs 'User Details' do
f.input :email
f.input :password
f.input :password_confirmation
end
f.actions
end
end
它在本地主机和远程开发环境中工作正常。但是在使用生产环境的暂存中 run 时会出现 502 错误。
查看日志似乎查询需要很长时间。试图弄清楚为什么需要更长的时间,似乎一次又一次地为每个用户执行获取身份的查询,这是一种低效的方式。我们还尝试在暂存中使用数据并将其导入本地和开发环境,以查看是否是导致错误的数据大小,但它仍然可以在那里工作。我知道查询效率低下。实现这一目标的正确方法是什么?
如果我用的是正确的方法,请帮我解决错误。谢谢
令人惊讶的是,如果我删除标识列,则不会发生此错误。
好吧,这个问题有非常不寻常的解决方案,可能与这个问题没有具体关系,但是是的
问题出在内存上。在服务器上,磁盘 space 变得过度使用。我们通过删除一些旧的日志文件来释放一些内存,并且使用 pluck
而不是 collect
,只是为了只获取需要的 "provider" 而不是整个记录。
我的用户可以有很多身份(取决于他们是使用 facebook、google 还是我的网站登录)。在 ActiveAdmin 中显示身份我有以下代码。
ActiveAdmin.register User do
menu label: 'Subscribers'
ActiveAdmin.register Identity do
belongs_to :user
end
index do
selectable_column
column :email
column :current_sign_in_at
column :sign_in_count
column :created_at
column "Sign-up Provider", :identities do |user|
ul do
user.identities.collect do |identity|
li do
if identity.provider == "gplus"
"Google"
else identity.provider == "facebook"
identity.provider.capitalize
end
end
end
"Self"
end
end
actions
end
form do |f|
f.inputs 'User Details' do
f.input :email
f.input :password
f.input :password_confirmation
end
f.actions
end
end
它在本地主机和远程开发环境中工作正常。但是在使用生产环境的暂存中 run 时会出现 502 错误。 查看日志似乎查询需要很长时间。试图弄清楚为什么需要更长的时间,似乎一次又一次地为每个用户执行获取身份的查询,这是一种低效的方式。我们还尝试在暂存中使用数据并将其导入本地和开发环境,以查看是否是导致错误的数据大小,但它仍然可以在那里工作。我知道查询效率低下。实现这一目标的正确方法是什么?
如果我用的是正确的方法,请帮我解决错误。谢谢
令人惊讶的是,如果我删除标识列,则不会发生此错误。
好吧,这个问题有非常不寻常的解决方案,可能与这个问题没有具体关系,但是是的
问题出在内存上。在服务器上,磁盘 space 变得过度使用。我们通过删除一些旧的日志文件来释放一些内存,并且使用 pluck
而不是 collect
,只是为了只获取需要的 "provider" 而不是整个记录。