删除MySQL中存储的文本的附加字符

删除MySQL中存储的文本的附加字符,mysql,ruby-on-rails,ruby,Mysql,Ruby On Rails,Ruby,我有一个api控制器,它从api用户那里收集信息。但是,在MySQL数据库中发送和存储某些用户信息时,有时会添加下划线,如“这是一个测试”而不是“这是一个测试”。然而,当通过浏览器运行时,它存储得很好 有什么问题吗 控制器提取 @message.message = CGI.unescape(params[:message]).strip 作为一个临时解决方案,我想知道如何去掉存储中或消息出现时添加到消息中的所有6个下划线 class Api::V1::Json::MessagesControl

我有一个api控制器,它从api用户那里收集信息。但是,在MySQL数据库中发送和存储某些用户信息时,有时会添加下划线,如“这是一个测试”而不是“这是一个测试”。然而,当通过浏览器运行时,它存储得很好

有什么问题吗

控制器提取

@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 Api::V1::Json::MessagesControlleruser\u token)。首先
如果令牌
@当前用户=用户.find(令牌.user\u id)
其他的
假的
结束
结束
结束
模型为

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
class消息true
验证:from,:presence=>true
验证:到,:存在=>true
验证:status,:presence=>true
验证以下内容的长度:message,:max=>1600,:allow\u blank=>true
验证的长度为:from,:max=>11,:allow\u blank=>false
属于:用户

像这样更改您的型号

class Message < ActiveRecord::Base

  before_save :strip_underscore

  def strip_underscore
   self.message.gsub("______","")
  end

end
class消息
像这样更改您的型号

class Message < ActiveRecord::Base

  before_save :strip_underscore

  def strip_underscore
   self.message.gsub("______","")
  end

end
class消息
一个想法:在保存之前使用
钩子去掉那些下划线。@SergioTulentsev,请举例说明6个下划线是一致的还是不同的?在
sms
方法中添加
提升“Debug{params.inspect}”
并发布结果想法:在保存之前使用
钩子去掉那些下划线。@SergioTulentsev,请举例说明6个下划线是一致的还是不同的?在你的
sms
方法中添加
raise“Debug#{params.inspect}”
,如果
\uu
的数量可能不同,请使用
.gsub(/+$/,'')
@shiva,但最重要的是,为什么会发生这种情况?需要更多详细信息来检查@shiva,我将添加整个API控制器和模型,或者如果
\uu
的数量可能不同,请使用
.gsub(/\u+$/,'')
@shiva,但最重要的是,为什么会发生这种情况?需要更多详细信息来检查@shiva,我将添加整个API控制器和模型