我正在尝试在我的rails应用程序中引入一种方法,该方法将获取输入到rails_admin新用户表单中的值,并传递一个方法来填充用户的剩余只读部分。用户模型是一个设计模型。
我尝试使用 if save
在自定义设计控制器中引入该方法,但检查控制台时,该方法似乎没有运行。
我想这需要在 rails admin 中配置编辑操作,但我不确定如何与 rails admin 进行自我引用以及如何在这种情况下调用if save
。
提前感谢!!
我能很好地理解你的问题,但是你想在用户保存对象后调用一个方法吗?我过去做过这个:
class Employee < ApplicationRecord
has_many :downtimes
# A getter used to populate the field on rails admin
def downtime_reason
downtimes.last.reason
end
# A setter that will be called with whatever the user wrote in your field
def downtime_reason=(reason)
downtimes.find_or_create_by(reason: reason)
end
rails_admin do
configure :downtime_reason, :text do
virtual?
end
edit do
field :downtime_reason
end
end
end
我不建议弄乱rails管理控制器。但是,如果您必须并且想在帖子中更改参数,您可以随时执行以下操作:
class ApplicationController
before_action :modify_params if: :in_admin_controller?
def modify_params
params[:something] = 'your brand new value'
end
def in_admin_controller?
params[:controller] == 'rails_admin/main'
end
end
这取决于从应用程序控制器继承的 rails 管理控制器,在最新的(1.2.0( rails admin 中,可以在初始化器中配置,如下所示:
#/config/initializers/rails_admin.rb
RailsAdmin.config do |config|
config.parent_controller = '::ApplicationController'
end