我有一个控制器接受来自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'的变体。所以我的猜测是我的查找有问题,但我只是不确定。
答案 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)