【问题标题】:Accessing Rails Class/Model Methods访问 Rails 类/模型方法
【发布时间】:2011-08-05 08:58:11
【问题描述】:

我是 Rails 新手,正在寻找编写某些方法的最佳方法。

我正在尝试编写一个属于某个模型并且无需启动实例即可访问的方法。到目前为止,我在我的类 PaymentNotification 下有这个

def url
   url_for(:controller => 'payment_notifications', :only_path => false)
end

这里的问题是我需要这样做才能访问url

n = PaymentNotification.new
n.url

在我的代码中,我希望能够编写 PaymentNotification.url 来访问与该模型相关的方法。

也许我想错了,有人可以指导我。基本上,我想要实现的是每个模型都可以有它的一组方法和属性,以便它们都被组织起来,并且我从代码中知道每个方法在哪个文件中声明,而不仅仅是调用一个

payment_notification_url

可能位于任何不相关的初始化文件中。我看到了辅助方法,但似乎我仍然无法使用点语法,并且必须编写诸如“payment_notification_url”之类的内容来访问我的网址

您有什么想法可以做到这一点吗?

【问题讨论】:

    标签: ruby-on-rails ruby class methods


    【解决方案1】:

    你需要通过self关键字定义一个类方法。

    def self.url
       url_for(:controller => 'payment_notifications', :only_path => false)
    end
    

    然后你可以使用 PaymentNotification.url

    class A
      def self.a
        p "Class method"
      end
    
      def b
        p "Instance Method"
      end
    end
    
    A.a   #Class method
    #A.b #NoMethodError
    
    a = A.new
    a.b #Instance Method
    #a.a    #NoMethodError
    

    【讨论】:

    • 我试过了,但似乎“url_for”在该范围内变得不可用。知道为什么吗?这是我看到的错误:#<0x10a731120>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-07
    • 2011-07-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多