Ruby on rails 超越装置控制器

Ruby on rails 超越装置控制器,ruby-on-rails,devise,ruby-on-rails-4,Ruby On Rails,Devise,Ruby On Rails 4,正在试验针对Rails 4的Desive 3.0,并考虑将其集成到现有应用程序中,以取代我自己的身份验证系统 我自己的用户\u控制器在注册期间与API(条带)通信,我不确定如果我使用Desive,我将如何包含此功能 我是否打算以某种方式覆盖/扩展Desive控制器?任何帮助都将不胜感激。您可以在控制器中定义操作,并在其中调用super,这将包括相应设计操作的功能。您还可以在其中添加自己的功能 EG:考虑注册控制器() 在这里,您可以在自己的注册控制器创建操作中使用设备的注册控制器创建操作代码,

正在试验针对Rails 4的Desive 3.0,并考虑将其集成到现有应用程序中,以取代我自己的身份验证系统

我自己的
用户\u控制器
在注册期间与API(条带)通信,我不确定如果我使用Desive,我将如何包含此功能


我是否打算以某种方式覆盖/扩展Desive控制器?任何帮助都将不胜感激。

您可以在控制器中定义操作,并在其中调用
super
,这将包括相应设计操作的功能。您还可以在其中添加自己的功能

EG:考虑注册控制器()

在这里,您可以在自己的注册控制器创建操作中使用设备的注册控制器创建操作代码,并添加代码中注释的功能

class RegistrationsController < Devise::RegistrationsController
  .
  .
  .

  def create
    build_resource(sign_up_params)

    if resource.save
      if resource.active_for_authentication?
        set_flash_message :notice, :signed_up if is_navigational_format?
        sign_up(resource_name, resource)
        # Here the user successfully signs up, so you can use your stripe API calls here.
        respond_with resource, :location => after_sign_up_path_for(resource)
      else
        set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if is_navigational_format?
        expire_session_data_after_sign_in!
        respond_with resource, :location => after_inactive_sign_up_path_for(resource)
      end
    else
      clean_up_passwords resource
      respond_with resource
    end

  end

end 
类注册控制器在为(资源)注册路径之后
其他的
设置flash消息:注意,如果是导航格式,“已注册但{resource.inactive{message}”?
登录后,会话数据过期!
使用资源响应:位置=>在不活动之后注册路径(资源)
结束
其他的
清除密码资源
用资源回应你
结束
结束
结束

对于未来的谷歌用户:可以在继承控制器的动作中调用
super
,并执行任何您想要的操作,而无需覆盖设计代码:

class Users::RegistrationsController < Devise::RegistrationsController
  def create
    super do |user|
      NotificationMailer.user_created(user).deliver
    end
  end
end
类用户::注册控制器<设计::注册控制器
def创建
超级用户|
NotificationMailer.user\u已创建(用户).deliver
结束
结束
结束

谢谢-但是我如何检测用户是否成功注册?因此您在注册控制器的创建操作中询问。是-在创建操作中,如果用户成功创建,则我希望与条带API通信-我还需要更新新创建用户的属性!所以我只是扩展了Desive注册控制器并调整了他们的代码。是的,这是在你的应用程序中重新编写他们的代码,但我认为这是我们能为这种情况做的最好的了。