0

我有一个控制器,它接受来自 Twilio 的 SMS 并创建一个新事务。我的目标是我想发送一条以数字为正文的短信,然后接受来自电话号码以将其与员工记录相匹配。

应用程序/控制器/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”字段创建为空。所以我不知道我下面的红宝石的一部分是否损坏,但我相信 :employee_id 正在将 null 传递给新对象,我不确定这有什么损坏。我很乐意提供您需要的任何其他代码... :Body 和 :From 是 Twilio 传入 SMS 的参数。我已确保数据库中有一名员工,其中包含我发送的电话号码,包括带有和不带有前面“1”的变体。所以我的猜测是我的查找有问题,但我不确定。

4

2 回答 2

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
于 2013-06-07T12:01:44.413 回答
0

最终这样做:

@transaction = Transaction.new(:item_id => item[:id], :employee_id => employee[:id], :status => item_status)
于 2013-06-13T16:57:55.400 回答