我试图在我的rails应用程序中引入一个方法,该方法将输入rails_admin新用户表单中的值,并传递一个方法来填充用户的剩余只读部分。用户模型是一个设计模型。
我尝试使用if save
在自定义设备控制器中引入该方法但是检查控制台时,该方法似乎没有运行。
我想这需要在rails admin中配置编辑操作,但我不确定如何使用rails admin进行自我引用以及如何在此实例中调用if save
。
提前致谢!!
答案 0 :(得分:0)
我希望我能很好地理解你的问题,但你希望在用户保存对象后调用一个方法吗?我过去做过这个:
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 admin控制器从应用程序控制器继承,在最新的(1.2.0)rails admin中,这可以在初始化程序中进行配置,如下所示:
#/config/initializers/rails_admin.rb
RailsAdmin.config do |config|
config.parent_controller = '::ApplicationController'
end