我们几个月来一直在努力解决这个问题,并没有做到这一点。由于这是第一次被问到,我们更改了代码(基于该网站的原始开发人员所建议的内容),但我们仍然没有达到我们需要的位置。
我对Ruby比较陌生,目前正在学习一些课程以了解更多信息,所以请耐心等待。我们正在使用Ruby 1.9和Rails 3.2我们使用AS 400 / DB2作为我们的数据库。
我们有一个在线订购网站,您必须设置一个帐户才能访问。根据您设置的帐户类型,您可能必须由某人批准您的订单。即如果我是一个掉落帐户,我的经销商必须批准我订购的东西。此外,如果我是一个专用的下落帐户,我的经销商也必须批准我订购的东西。
if sign_on.acctypw1.strip == "DS" or sign_on.acctypw1.strip == "DSD"
rec = SignOn.first(:conditions => {:userw1 => login}, :select=> "prfdstw1")
#ignore_exception { puts "webid = rec.prfdstw1"; raise Exception; puts "webid = rec.prfdstw1";}
webid = "rec.prfdstw1"
def ignore_exception
begin
yield
rescue Exception
end
end
if sign_on.acctypw1.strip == "DS"
rec = SignOn.find_by_userw1(login)
webid = rec.prfdstw1
end
elsif sign_on.acctypw1.strip == "DSD"
rec = SignOn.find_by_userw1(login)
webid = rec.prfdstw1
end
我们正在接收批准电子邮件,但我们注意到,例如,如果没有专用投递的电子邮件地址,我们就会收到NOMethodError (undefined method 'prfdstw1' for nil:NilClass)
我的猜测是我需要一种方法来测试Nil,在ROR中这样做的最佳方法是什么?
UPDATE ---------------- 我得到的一些DS帐户的错误是:
NoMethodError (undefined method `prfdstw1' for nil:NilClass):
app/models/order.rb:355:in `submit_order'
第355行
target_email = Contact.connection.select_values
("SELECT EMAL23 FROM WEBOEL23 WHERE ACT223 = #
{Contact.connection.quote(rec.prfdstw1)}").uniq
在进一步测试时,似乎失败发生在拥有2个以上批准电子邮件的帐户上。
我现在的理论是,我在做数组的方式存在问题
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
有没有更好的方法返回数组taht允许超过2封电子邮件?
答案 0 :(得分:1)
这取决于你想要的。
您可以使用:
webid = rec.prfdstw1 if rec
或者这个:
webid = rec ? rec.prdfdstw1 : "null"