我有一个从 api 用户那里收集信息的 api 控制器。但是,某些用户信息在发送并存储在 MySQL 数据库中时,有时会出现像这样添加的下划线,"this is a test ________"
而不是this is a test
. 但是,当通过浏览器运行时,它存储得很好。
可能是什么问题呢。
控制器提取;
@message.message = CGI.unescape(params[:message]).strip
作为临时修复,任何想法我可以删除所有 6 个下划线,这些下划线无论是在存储中还是在消息出现时都添加到消息中。
class Api::V1::Json::MessagesController < ApplicationController
before_filter :authenticate
require 'uri'
require 'cgi'
def sms
@message = Message.new
#@message.to = decoded_to.gsub(/[^\d]/,"")
@message.to = CGI.unescape(params[:to]).strip.gsub("+","").gsub(/\s+/, "")
@message.from = CGI.unescape(params[:from])
@message.message = CGI.unescape(params[:message]).strip
@message.user_id = current_user.id
@message.status = 'Queued'
if @message.save
MessageWorker.perform_async(@message.id, [""], current_user.id)
render json: {status: "Success"}
else
render json: {status: "Failed" }
end
end
private
def authenticate
error!('Unauthorized. Invalid token.', 401) unless current_user
end
def current_user
# find token. Check if valid.
user_token = params[:token]
token = ApiKey.where(:access_token => user_token).first
if token
@current_user = User.find(token.user_id)
else
false
end
end
end
模型是;
class Message < ActiveRecord::Base
attr_accessible :message, :phone, :status, :to, :from, :user_id
attr_accessor :schedule
validates :message, :presence => true
validates :from, :presence => true
validates :to, :presence => true
validates :status, :presence => true
validates_length_of :message, :maximum => 1600, :allow_blank => true
validates_length_of :from, :maximum => 11, :allow_blank => false
belongs_to :user