rails_admin和设计在新用户创建和更新时运行方法



我正在尝试在我的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

最新更新