感谢分享,都是一些很实用的技巧,已经接近两年没用 ActiveAdmin 了,翻了翻自己的陈年老代码,我也分享一些个人感觉有些作用的技巧吧
# config/initializers/active_admin.rb
module AdminPageLayoutOverride
def build_active_admin_head
# you can move the call to super at the end, if you wish
# to insert things at the begining of the page
super
# this will be added at the end of <head>
within @head do
white_list = %w(admin/announcements admin/distributions admin/introductions admin/versions)
if params['controller'].in?(white_list)
text_node javascript_include_tag(params['controller'])
end
end
end
end
ActiveAdmin::Views::Pages::Base.send :prepend, AdminPageLayoutOverride
# config/initializers/active_admin.rb
module ActiveAdmin
module Views
class RtfContent < ActiveAdmin::Component
builder_method :rtf_content
def build(content, attributes = {})
super(attributes)
textarea class: 'rtf-content-ckeditor', name: SecureRandom.uuid do
content
end
end
end
end
end
# config/initializers/active_admin.rb
ActiveAdmin.setup do |config|
#...
config.namespace :admin do |ns|
ns.site_title = "Admin System"
ns.authentication_method = :authenticate_admin_user!
ns.authorization_adapter = ActiveAdmin::PunditAdapter
ns.pundit_default_policy = 'AdminPolicy'
ns.current_user_method = :current_admin_user
ns.logout_link_path = :destroy_admin_user_session_path
end
config.namespace :public do |ns|
ns.site_title = "Public NS"
ns.site_title_link = '/public'
ns.authentication_method = :authenticate_teacher!
ns.current_user_method = :current_teacher
ns.logout_link_path = :destroy_teacher_session_path
ns.footer = '教师工作台'
end
#...
end
# Devise 的处理
class ActiveAdmin::Devise::SessionsController
def after_sign_out_path_for(resource_or_scope)
case resource_or_scope
when :teacher
new_teacher_session_path
when :admin_user
new_admin_user_session_path
end
end
def after_sign_in_path_for(resource)
case resource
when Teacher
public_root_path
when AdminUser
admin_dashboard_path
end
end
end
反过来想一想:如果 private 方法在 class 内部都不能调用,那什么时候允许调用?
维护一个允许的参数白名单,但是新增参数的时候一不小心就会忘记掉,导致生成 URL 的时候参数丢失
我这个“新手”终于又能回帖了
之前在生产环境一个小 partial 用时是 0.1 ms,但是因为要调用 1000 次,算下里也要用 100ms,果断去掉了。楼主的 100 ms 是本地开发环境还是生产环境的数据? 如果是本地的,建议测一下 production 的情况。如果是 production 的,那多半不是 partial 的锅。
https://github.com/jhawthorn/discard#why-not-paranoia-or-acts_as_paranoid
跑个题,软删除的需求最好选择 discard,paranoia 侵入性太强了
因为你两台服务器都是 sidekiq 的 consumer,job 可能被被分配到任意一台执行
Agency.includes(:project).where("project.score > 60")
这个就是 gem 的 feature 吧
获取原始值可以试试
user.type_id_before_type_cast
RubyConf China 2019 最大赢家 —— 有钱派
录制及转压幸苦了
很实用,以前都是手动调用 i18n
性感姜军,在线卖票,不买即亏
期待
https://medium.com/alturasoluciones/how-to-set-up-rails-api-app-to-use-activeadmin-79b418df8aad
https://blog.heroku.com/a-rock-solid-modern-web-stack
放一个项目里没什么问题,就算你原来是个 api mode 的项目,也可以往里加 activeadmin
keynote 链接都是错的
RestClient::Request.execute(method: :get, url: 'http://example.com/resource',
timeout: 10, headers: {params: {foo: 'bar'}})
# ➔ GET http://example.com/resource?foo=bar
当年也是因为要用腾讯的 API 才知道 RestClient 还可以这么用的
炮神可以分享一下你的 PG 学习路线吗?
不如从门店拉几个中介从 0 入门吧
应该是机器人被屏蔽了
简历已发邮箱,期待回复
/health
会 timeout,说明此时该服务器的负载确实已经太高了。要么你的 timeout
太小了,要么就是触发创建新 container 条件不够“敏感”
生产环境使用 Sidekiq 的话可以创建一个长度为 1 的队列专门用来跑这类任务,这样不会影响到并行的其它任务。有这种需求直接在开发环境就用 Sidekiq 吧
这种情况应该更改的是监控的指标吧?比如说 x 分钟内 CPU、内存占用率之类的,通过这种指标来触发创建 container。health check 和 load monitoring 应该分开