簡體   English   中英

Ruby on Rails:添加其他字段來設計用戶模型時出錯

[英]Ruby on Rails: Error adding additional fields to devise user model

我正在嘗試添加“姓氏”,“姓氏”和“電話”字段。 但是,當我重新訪問本地主機時,總是會收到此錯誤:

NoMethodError in Devise::RegistrationsController#new

undefined method `configure_permitted_parameters' for #<Devise::RegistrationsController:0x00000101fcd008>

這就是我所做的:

首先,我創建了一個注冊控制器:

class RegistrationsController < Devise::RegistrationsController
    before_filter :configure_permitted_parameters, :only => [:create]

  protected



       def configure_permitted_parameters
            devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:first_name, :last_name, :phone, :email, :password, :password_confirmation) }
        end
end

然后,我跑了:

rails g migration AddFieldsToUsers first_name:string last_name:string phone:int

其次是:

rake db:migrate

在航站樓...

然后我去添加

      t.string :first_name,
      t.string :last_name,
      t.integer :phone,

在設計中創建用戶遷移文件。

我還嘗試將Add_column替換為AddFieldsToUsers遷移文件中的t.string:

class AddFieldsToUsers < ActiveRecord::Migration
  def change
    t.string :users, :first_name, :string
    t.string :users, :last_name, :string
    t.integer :users, :phone, :int
  end
end

如果有人可以幫助您解決這一問題,我將非常感激。

首先- 關於遷移

class AddFieldsToUsers < ActiveRecord::Migration
  def change
    add_column :users, :first_name, :string
    add_column :users, :last_name, :string
    add_column :users, :phone, :integer
  end
end

$ rake db:migrate

其次-關於rails4中的權限:

這個有用的https://stackoverflow.com/a/19793371/3563993這個

application_contoller.rb

class ApplicationController < ActionController::Base
  before_filter :configure_permitted_parameters, if: :devise_controller?

  ...

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) { |u| u.permit(:email, :password, :password_confirmation, :first_name, :last_name, :fone) }
    devise_parameter_sanitizer.for(:account_update) { |u| u.permit(:email, :password, :password_confirmation, :current_password, :first_name, :last_name, :fone) 
  end
end

在用戶類中的attr_accessible:之后放置first_name,last_name,phone。 如果您使用滑軌3

您應該根據設計文檔在應用程序控制器中添加動作configure_permitted_parameters

class ApplicationController < ActionController::Base
  before_action :configure_permitted_parameters, if: :devise_controller?

  protected

  def configure_permitted_parameters
    devise_parameter_sanitizer.for(:sign_up) << :username
  end
end

您的錯誤直接表明您沒有針對新操作的configure_permitted_parameters方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM