【问题标题】:Run Active Record Class Method from Terminal从终端运行 Active Record 类方法
【发布时间】:2015-11-05 02:25:45
【问题描述】:

我在class Loan < ActiveRecord::Base 中有方法def repay_loans,如何在rails 控制台中运行它。

我尝试了 Loan.repay_loans 但我得到了这个错误:

NoMethodError: undefined method `repay_loans' for Loan (call 'Loan.connection' to establish a connection):Class
from /Library/Ruby/Gems/2.0.0/gems/activerecord-4.1.4/lib/active_record/dynamic_matchers.rb:26:in `method_missing'

谢谢。

【问题讨论】:

    标签: ruby-on-rails activerecord methods


    【解决方案1】:

    嘿,根据你的代码 def repay_loans 是对象方法,你试图按类调用它,所以它会给你错误

    你可以通过创建对象来调用它

     l = Loan.new
     l.repay_loans
    

    否则,如果您希望在类级别上使用它,那么您可以将您的方法定义为类方法,例如:

    def self.repay_loans
    

    【讨论】:

      【解决方案2】:

      似乎您正在尝试将实例方法作为类方法运行。

      如果你想要一个类方法,那么将你的定义更改为

      def self.repay_loans
        ...
      end
      

      否则,您需要使用正确的对象(Loan 类的实例)调用 repay_loans

      【讨论】:

      • 如果我将类名更改为 self.repay_loans 我在运行 Loan.repay_loans 时仍然会遇到同样的错误。
      • 不是类名,方法定义。很可能您需要重新加载控制台。
      • @Pabi 您需要使用 reload 重新加载控制台!类更改后的方法
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-24
      • 2016-04-23
      相关资源
      最近更新 更多