无法找到devise创建方法创建用户的位置

时间:2014-03-22 19:23:34

标签: ruby-on-rails devise

更新

我想为此添加更多详细信息。我有一个用户模型和这个用户模型

has_many :trial_subscriptions
attr_accessible :trial_subscriptions_attributes
accepts_nested_attributes_for :trial_subscriptions, :allow_destroy => true

我正在构建自定义表单,因此当用户输入trial_email时,表单将创建一个具有关联trial_subscription的新用户

trial_subscription.rb模型继承自manual_subscription模型,manual_subscription继承自订阅模型。

订阅模式

belongs_to :user

我需要从has_many方面构建关联。现在我无法确定在何时发布表单(在设计时涉及到@user)。我需要知道创建方法在用户创建时的位置,因此我的问题如下。

这将是与/ sales网址中正常注册的单独页面,因此我无法在注册表单中添加嵌套字段。


我正在处理的rails应用程序已经安装在用户模型上。

在路线中

我有

devise_for :users, :controllers => {:registrations => "registrations"}
resources :users

注册表单位于views / devise / registrations / new.html.erb

我有一个带有new和create方法的users_controller.rb

在users_controller.rb中有

这个before_filter

before_filter :authenticate_admin!

我们已安装了有效的管理员。我对代码还很陌生。由于此过滤器存在,我确信没有在此控制器中创建用户。

当我去

/users/sign_up  - there is the sign up page

如果我这样做

   /users/new - I am redirected to /users/sign_up 

所以我猜测用户是在注册控制器中创建的,但新方法是  此

  def new
    session[:qbid] = params[:qbid]
    session[:trial] = params[:trial]
    session[:sublength] = params[:sublength]
    if session[:trial] = true
      @trial_flow = true
    end
    super
  end

没有User.new对象传递给视图进行编辑?我猜这个设计并不需要它。

我对创建用户的位置感到困惑,因为我的任务是创建一个创建新用户的自定义表单。

我不知道将表单发布到哪里? registrations_controller?

用户有一个has_many订阅关联,我需要发布一个同时创建用户及其订阅的表单。

1 个答案:

答案 0 :(得分:1)

您需要自定义设计注册控制器。见it's doc 虽然文档仅显示如何自定义会话控制器(登录),但步骤类似,您只需要以不同方式命名自定义控制器。

如果您想知道,您可以看到here如何设计'控制器看。 当您自定义这些时,您将使用继承。这是你应该阅读的另一个主题。