Twilio记录创建控制器,传递无结果

时间:2013-06-06 18:52:54

标签: ruby-on-rails ruby twilio

我有一个控制器接受来自Twilio的短信并创建一个新的交易。我的目标是发送一条带有号码作为正文的短信,然后接受来自电话号码的号码,以便将其与员工记录相匹配。

应用程序/控制器/ twilio_controller.rb

    class TwilioController < ApplicationController

      def process_sms
        @city = params[:FromCity].capitalize
        @state = params[:FromState]
          render 'process_sms.xml.erb', :content_type => 'text/xml'
        end

      def create
        phone_number = params[:From][/\d+/]
        employee = Employee.where(phone: phone_number).first
        if employee
          @transaction = Transaction.new(:item_id => params[:Body], :employee_id => employee, :status => true)
          @transaction.save
        end
      end

    end

但问题是,当我发送文本时,它会创建事务记录,但会将'employee_id'字段创建为null。所以我不知道下面我的ruby的一部分是否被破坏了,但我相信:employee_id正在将null传递给新对象,我不确定这是什么。我很乐意提供您需要的任何其他代码......:Body和:From是Twilio传入短信的参数。我已经确保我在数据库中有一名员工,其中包含我发送的电话号码,包括带有和不带前面的'1'的变体。所以我的猜测是我的查找有问题,但我只是不确定。

2 个答案:

答案 0 :(得分:0)

更改

employee = Employee.where(phone: phone_number).first
if employee
  @transaction = Transaction.new(:item_id => params[:Body], :employee_id => employee, :status => true)
  @transaction.save
end

if employee = Employee.find_by_phone(phone_number)
  Transaction.create!(item_id: params[:Body], employee_id: employee.id, status: true)
end

答案 1 :(得分:0)

结束这样做:

@transaction = Transaction.new(:item_id => item[:id], :employee_id => employee[:id], :status => item_status)