Nei*_*lty 39 ruby-on-rails ruby-on-rails-4
我正在尝试向full_name我的User模型(使用devisegem)和Rails 4 添加字段/列.
大多数在线示例都建议使用attr_accessible,但听起来在Rails 4中应该采用不同的方式.
我如何添加full_name到我的用户模型?我已经能够成功运行迁移.
文件:迁移> add_full_name_to_users
class AddFullNameToUsers < ActiveRecord::Migration
def change
add_column :users, :full_name, :string
end
end
Run Code Online (Sandbox Code Playgroud)
文件:注册> app/views/devise/registration/new.html
.
.
.
<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>
<%= devise_error_messages! %>
<%= f.label :full_name %>
<%= f.text_field :full_name, :autofocus => true %>
<%= f.label :email %>
<%= f.email_field :email %>
.
.
.
Run Code Online (Sandbox Code Playgroud)
hey*_*tty 66
一旦您的模型具有其full_name属性,您将必须为#sign_up和#account_update设计操作配置允许的参数.
class ApplicationController < ActionController::Base
before_action :configure_devise_permitted_parameters, if: :devise_controller?
protected
def configure_devise_permitted_parameters
registration_params = [:full_name, :email, :password, :password_confirmation]
if params[:action] == 'update'
devise_parameter_sanitizer.for(:account_update) do
|u| u.permit(registration_params << :current_password)
end
elsif params[:action] == 'create'
devise_parameter_sanitizer.for(:sign_up) do
|u| u.permit(registration_params)
end
end
end
end
Run Code Online (Sandbox Code Playgroud)
yoz*_*zzz 26
这个解决方案应该可以正常工作,使用sign_up和更新:
class ApplicationController < ActionController::Base
before_filter :configure_permitted_parameters, if: :devise_controller?
protected
def configure_permitted_parameters
devise_parameter_sanitizer.permit(:sign_up, keys: [:full_name])
devise_parameter_sanitizer.permit(:account_update, keys: [:full_name])
end
end
Run Code Online (Sandbox Code Playgroud)
小智 12
从设计文档:
自定义自己的视图时,最终可能会向表单添加新属性.Rails 4将参数清理从模型移动到控制器,导致Devise也在控制器处理这个问题.
您应该查看下面的网址,找到最符合您需求的方法:https: //github.com/plataformatec/devise#strong-parameters
| 归档时间: |
|
| 查看次数: |
22666 次 |
| 最近记录: |