Ruby On Rails返回数组NoMethodError

时间:2014-07-02 15:17:53

标签: ruby-on-rails ruby arrays ibm-midrange db2-400

我们几个月来一直在努力解决这个问题,并没有做到这一点。由于这是第一次被问到,我们更改了代码(基于该网站的原始开发人员所建议的内容),但我们仍然没有达到我们需要的位置。

我对Ruby比较陌生,目前正在学习一些课程以了解更多信息,所以请耐心等待。我们正在使用Ruby 1.9和Rails 3.2我们将AS 400 / DB2用于我们的数据库。

我们有一个在线订购网站,您必须设置一个帐户才能访问。根据您设置的帐户类型,您可能必须由某人批准您的订单。即如果我是一个下落账户,我的经销商必须批准我订购的东西。此外,如果我是一个专用的下落账户,我的经销商也必须批准我订购的东西。

2014年7月7日更新


最初,对于有1-2个电子邮件地址的帐户,一切都很有效,但是在有两个以上的情况下我们得到NoM​​ethodError:

NoMethodError (undefined method `prfdstw1' for nil:NilClass): 
app/models/order.rb:355:in `submit_order'

我们现在已经使用不同的帐户进行了几个小时的测试,现在似乎没有确定的模式,失败与成功的帐户,大约50%的测试工作,无论电子邮件数量或帐户类型。

有问题的行是:

            if sign_on.acctypw1.strip == "DS" or sign_on.acctypw1.strip == "DSD"        
                rec = SignOn.first(:conditions => {:userw1 => login}, :select=> "prfdstw1") 
                webid = rec.prfdstw1 if rec
                def ignore_exception
                   begin
                     yield  
                   rescue Exception
                  end
                end   

target_email = Contact.connection.select_values
("SELECT EMAL23 FROM WEBOEL23 WHERE ACT223 = #
{Contact.connection.quote(rec.prfdstw1)}").uniq

if sign_on.acctypw1.strip == "DS" or sign_on.acctypw1.strip == "DSD" 
                # If there is no distributor email address, the mailer model will
 substitute in the admin's email from their settings
                 target_email.each do | email_address | 
Mailer.deliver_order_distributor_approval_email(email_address, 'Coastal Pet Online 
Ordering<noreply@coastalpet.com>', "Order Confirmation Approval", email_details)
                 end

有没有更好的方法来返回允许超过2封电子邮件的数组?我现在不确定target_email行。我们收到的一些帐户没有可用的电子邮件地址,但这根本不是任何押韵或理由。

提前感谢您的帮助!

0 个答案:

没有答案