我想用电话号码保存模型用户,但是Rails意外将电话从字符串转换为整数类型
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)
谁能帮我?
非常感谢。
更新:
移民:
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
最佳答案
您的控制台输出显示
{"password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "phone"=>"12345678901", "username"=>"test", "user"=>{"username"=>"lv", "phone"=>"12345678901"}} ,
相反,它应该像这样:
{"user"=>{"password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]", "phone"=>"12345678901", "username"=>"test"}}
根据上述内容在
form
中进行更改