Clearance 自动创建具有唯一 account_id(不必是 UUID)的“帐户”并将其分配给新用户注册时的最佳方法是什么?
我需要延长许可用户注册表单和用户控制器来处理这个问题,但我无法让它工作。
这应该是注册时的 before_filter 还是用户创建操作的一部分?
更新:添加一些代码以供参考...
# app/controllers/users_controller.rb
class UsersController < Clearance::UsersController
def create
@user = user_from_params
@account = account_from_params
@user.account = @account
if @user.save
sign_in @user
redirect_back_or url_after_create
else
render template: "users/new"
end
end
end
class AccountController < ApplicationController
def create
@account = Account.new(account_params)
end
private
def account_params
params[:account].permit(:id)
end
end
<fieldset>
<%= form.label :email %>
<%= form.text_field :email, type: 'email' %>
</fieldset>
<fieldset>
<%= form.label :password %>
<%= form.password_field :password %>
</fieldset>
# Users & Clearance routes
resources :passwords, controller: 'clearance/passwords', only: [:create, :new]
resource :session, controller: 'clearance/sessions', only: [:create]
resources :users, controller: 'clearance/users', only: [:create] do
resource :password,
controller: 'clearance/passwords',
only: [:create, :edit, :update]
end
get '/login' => 'clearance/sessions#new', as: 'sign_in'
delete '/logout' => 'clearance/sessions#destroy', as: 'sign_out'
get '/signup' => 'clearance/users#new', as: 'sign_up'
get '/users' => 'users#index'