【问题标题】:rails_admin and devise Running a method on new user creation and updaterails_admin 和 devise 在新用户创建和更新上运行方法
【发布时间】:2017-06-15 16:36:48
【问题描述】:

我正在尝试在我的 rails 应用程序中引入一种方法,该方法将获取输入到 rails_admin 新用户表单中的值,并传递一个方法来填充用户的剩余只读部分。用户模型是设计模型。

我尝试使用if save 在自定义设计控制器中引入该方法,但检查控制台,该方法似乎没有运行。

我想这需要在 rails admin 中配置编辑操作,但我不确定如何使用 rails admin 进行自我引用以及如何在这种情况下调用 if save

提前致谢!!

【问题讨论】:

  • 贴一些代码,让我们看看有什么问题。
  • 说实话,我不确定我什至会发布什么代码。我没有收到错误。我只是想弄清楚是否有办法将方法写入 rails-admin 的保存操作。如果有相关的代码部分,您会建议我很乐意发布我所拥有的
  • 尝试发布您的表单代码和控制器代码。

标签: ruby-on-rails devise rails-admin


【解决方案1】:

我希望我能很好地理解您的问题,但是您希望在用户保存对象后调用一个方法,对吗?我过去曾这样做过:

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

【讨论】:

    猜你喜欢
    • 2012-07-10
    • 2011-06-07
    • 2015-04-11
    • 2018-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-28
    相关资源
    最近更新 更多