2017-06-15 34 views
0

我正試圖將一種方法引入到我的rails應用程序中,該方法將採用輸入到rails_admin新用戶窗體中的值並傳遞一種方法來填充剩餘的只讀部分用戶。用戶模型是一個設計模型。rails_admin和devise在新用戶創建和更新上運行方法

我試過在使用if save的自定義設備控制器中引入方法,但檢查控制檯,該方法似乎沒有運行。

我想這將需要rails管理員中的編輯操作的配置,但我不確定如何自我引用rails管理員以及如何在此實例中調用if save

在此先感謝!

+1

發佈一些代碼,以便我們可以看到什麼是錯的。 –

+0

說實話,我不確定我會發布什麼代碼。我沒有收到錯誤。我更想知道是否有辦法將方法寫入rails-admin的保存操作中。如果有相關部分的代碼,你會建議我會很高興發佈我已經有的 –

+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 

這取決於軌管理控制器從應用控制器繼承,在最新版本(1.2.0)軌道管理員這可能是在初始化程序中配置像這樣:

#/config/initializers/rails_admin.rb 
RailsAdmin.config do |config| 
    config.parent_controller = '::ApplicationController' 
end