我正在尝试使用最佳实践重构模型,我认为这将是活动记录。
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 (未初始化的常量 Order::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
我已经尝试了下面的所有建议,是的,我仍在学习,但我真的需要一些指导来克服这个错误
你来自哪种语言,但你肯定不使用Ruby和rails风格。
- 首先,您使用
find_email_by_account act223
并分配一个变量,那么为什么要调用此方法。 - 其次,
d= ""
,什么是d
。在红宝石中,在编程中一般,最好使用显式名称。 - 对于
!act223.blank?
,有这种方法act223.present?
。 s = @email.where ["EMAL23=?" ]
中的s
是什么?- 可变
@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的评论。暂停一下,阅读有关Ruby和rails的信息。