我正在尝试使用最佳实践重构模型,我认为这将是Active Record。
class WEBOEL23 < ActiveRecord::Base
establish_connection "as400_#{RAILS_ENV}"
set_table_name "WEBOEL23"
def get_email
@weboe123 = WEBOEL23.EMAL23
where @weboel23
end
end
我在models / order.rb中调用它。在order.rb中我正在寻找weboel23表中的电子邮件。(这是来自AS400的逻辑文件)当执行此代码时,它返回一个NameError(未初始化)常数订单:: EMAL23)
if sign_on.acctypw1.strip == "DS" or sign_on.acctypw1.strip == "DSD"
if approval0!=""
Mailer.deliver_order_distributor_approval_email(Weboel23.get_email, "Coastal Pet Online Ordering<noreply@coastalpet.com>", "DIST Confirmation-0 ", email_details)
end
我已经尝试了下面的所有建议,是的我还在学习,但我真的需要一些指导来解决这个错误
答案 0 :(得分:0)
我不知道你来自哪种语言,但你明确地不使用ruby和rails Style。
find_email_by_account act223
并指定一个
变量,所以为什么要调用这个方法。d= ""
,什么是d
。在红宝石中,在程序中
一般来说,最好使用显式名称。!act223.blank?
,此方法有act223.present?
。s
中的s = @email.where ["EMAL23=?" ]
是什么?@email
或act223
?对于您的错误,名为weboel23
的文件必须定义名为Weboel123
的模型。
你应该做一个像@account.email
一样可调用的实例方法。
我建议建立一个这样的模型:
class WEBOEL23 < ActiceRecord::Base
establish_connection "as400_#{RAILS_ENV}"
set_table_name "WEBOEL23"
def email
WEBOEL23.where(ACT223: act223).first.email
end
end
所以你可以像这样使用它:
@weboel23.email
我不知道这是否是最佳做法,因为我不知道什么是ACT223或weboel23。
我同意@bjhaid的评论。暂停一下,阅读红宝石和铁轨。