如何将块传递给Devise创建方法?

时间:2015-02-19 16:28:43

标签: ruby-on-rails ruby devise

我正在使用devise token auth(其本身就是使用Devise),我试图修改resource对象,然后在用户注册时保存它。源代码中定义并在用户文档中解释的create方法具有yield resource if block_given?行,但以下代码无法按预期工作

class RegistrationsController < DeviseTokenAuth::RegistrationsController       
    def create                                                                 
          puts "this works"                                                    
          super do |resource|                                                  
            puts "this doesnt work"                                            
          end                                                                  
    end                                                                        
end                                                                            

知道为什么吗?

1 个答案:

答案 0 :(得分:2)

https://github.com/lynndylanhurley/devise_token_auth/blob/master/app/controllers/devise_token_auth/registrations_controller.rb

这个基本控制器没有块调用。

可能你的意思是https://github.com/plataformatec/devise/blob/master/app/controllers/devise/registrations_controller.rb

它有块调用,但是它不起作用,因为DeviseTokenAuth :: RegistrationsController不会向它传递块。

你需要一些其他方法来实现你想要的目标。

可能会将DeviseTokenAuth :: RegistrationsController中的代码粘贴到您的自定义控制器上,或者将DeviseTokenAuth gem粘贴并修补它。

别忘了做PR