タイトルが示すように、find_by_id を使用している場合でも、Heroku の本番環境で例外が発生していました。原因はわかりませんがbegin/ensure
、問題を回避するために a を使用しましたが、まだ問題が発生しています。
これが私の最初の解決策でした:
def select_location
begin
region = Region.find_by_id(params[:Digits])
ensure
Twilio::TwiML::Response.new do |r|
# if user pressed "9" (redirect)
if (params[:Digits] == '0')
@response = r.Redirect call_hq_path, method: 'GET'
# if region does not exist
elsif !region.id
@response = r.Play Clip.where(name: "invalid").first.url
@response = r.Redirect index_path, method: 'GET'
else
@response = r.Gather action: location_description_path(region), numDigits: '1' do |g|
region.locations.order(:number).each do |location|
g.Play location.listing_clip.url
g.Play number_url(location.number)
end
g.Play Clip.where(name: "9toreturn").first.url
end
end
end
end
render :xml => @response
end
問題はここにありますelsif !region.id
- まだこのエラーが発生しています:
2013-10-18T01:29:14.524289+00:00 app[web.1]: NoMethodError (undefined method `id' for nil:NilClass):
だから、私の2つの質問:
begin/ensure
問題を回避するための最良の方法は何ですか?- はいの場合、どうすれば
elsif
問題を解決できますか?
アップデート
から削除.id
した後、elsif
次のエラーが発生します。
2013-10-18T02:06:57.055617+00:00 app[web.1]: NoMethodError (undefined method `url' for nil:NilClass):
elsif
発砲しないのはどうですか?