2015-06-10 18 views
3

我要保存的电话号码型号的用户,但轨意外转换手机从字符串到整数类型轨强PARAMS意想不到的字符串转换为整数

def create 
    @user = User.new(user_params) 
    if @user.save 
     log_in @user 
     user_response = { 
      'user_id' => @user.id 
     } 
     render json: user_response 
    else 
     render json: @user.errors, status: :unprocessable_entity 
    end 
end 

private 
def user_params 
    params.require(:user).permit(:username, :phone, :password, :password_confirmation) 
end 

错误:

Parameters: {"password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "phone"=>"12345678901", "username"=>"test", "user"=>{"username"=>"lv", "phone"=>"12345678901"}} 

    (0.1ms) BEGIN 

    User Exists (0.2ms) SELECT 1 AS one FROM `users` WHERE `users`.`phone` = **BINARY '18610012942'** LIMIT 1 

    (0.1ms) ROLLBACK 

Completed 422 Unprocessable Entity in 6ms (Views: 0.2ms | ActiveRecord: 0.5ms) 

谁能帮助我? 非常感谢。

UPDATE:

迁移:

class AddPhoneToUsers < ActiveRecord::Migration 
    def change 
    add_column :users, :phone, :string, index: true 
    end 
end 

型号:

class User < ActiveRecord::Base 
attr_accessor :remember_token 

validates :phone, presence: true, length: {minimum: 11, maximum: 11}, 
         uniqueness: true, format: {with: VALID_PHONE_REGEX} 

end 
+0

显示你'users'迁移'table' – Prashant4224

+0

显示为'users'表,请您模型代码请在form变化! –

+0

感谢您的回复,已经更新 –

回答

0

你的控制台输出表示

{"password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "phone"=>"12345678901", "username"=>"test", "user"=>{"username"=>"lv", "phone"=>"12345678901"}} , 

相反,它应该是这样的:

{"user"=>{"password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "phone"=>"12345678901", "username"=>"test"}} 

根据上述