我正在try 向我的用户模型(使用devise gem)和Rails 4添加一个full_name字段/列.

大多数例子都是在线recommend using attr_accessible,但在Rails 4中,这听起来应该以不同的方式处理.

我如何将full_name添加到我的用户模型中?我已经成功运行了migrations.

File: Migration > add_full_name_to_users

class AddFullNameToUsers < ActiveRecord::Migration
  def change
    add_column :users, :full_name, :string
  end
end

File: Registration > 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 %>
.
.
.

推荐答案

一旦模型具有全名属性,就必须为#注册#和#帐户#更新设计操作配置允许的参数.

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

Ruby-on-rails相关问答推荐

如何将Form_With用于多个没有控制器的型号

RSpec系统测试无法从工厂访问新创建的记录

具有 IN 子句的参数化查询在 ruby​​-on-rails 的 blazer 工具中无法按预期工作

rails turbo frame 显然在更新,但浏览器窗口保持不变

在 Ruby on Rails html.erb 文件中循环

Time.zone.now.to_date 是否等同于 Date.today?

Rails:如何小写非英文字符串?

Rails 模型:您将如何创建一组预定义的属性?

Rails:文件路径

Rails 4 查找没有子元素的父母

奇怪的406 不可接受错误

是否有不涉及删除 Gemfile.lock 的在任何源中找不到 *gem*错误的修复?

在 PostgreSQL 中强制字符串的最大长度

Rails 4,Capistrano 3.0.0,无法加载这样的文件 - 部署

资源和资源方法之间的区别

Rails 路由:GET 没有参数 :id

RoR select_tag 默认值和选项

如何测试也定义为辅助方法的 ApplicationController 方法?

Rails.cache 在测试之间被清除了吗?

在 El Capitan 上安装 Nokogiri (1.6.7) 时出错