使用活动记录ROR按帐户查找电子邮件

时间:2014-02-18 19:23:22

标签: ruby-on-rails ruby ibm-midrange

我正在尝试使用最佳实践重构模型,我认为这将是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 

我已经尝试了下面的所有建议,是的我还在学习,但我真的需要一些指导来解决这个错误

1 个答案:

答案 0 :(得分:0)

我不知道你来自哪种语言,但你明确地不使用ruby和rails Style。

  • 首先,您使用find_email_by_account act223并指定一个 变量,所以为什么要调用这个方法。
  • 其次,d= "",什么是d。在红宝石中,在程序中 一般来说,最好使用显式名称。
  • 对于!act223.blank?,此方法有act223.present?
  • s中的s = @email.where ["EMAL23=?" ]是什么?
  • 来自变量@emailact223
  • 的位置

对于您的错误,名为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的评论。暂停一下,阅读红宝石和铁轨。