Rails具有这些很酷的属性,它们似乎实际上是方法。例如:在Ruby中的类上创建属性
class SomeController < ApplicationController
before_filter :authenticate!
end
这些实际上叫什么,你将如何创建自己的?举例来说,在我的模型之一,我希望能够有一个选择的内部方法处理一些结果的动态属性:
class MyModel < ActiveRecord::Base
active_method :some_class_method
end
我将如何设置这个,所以我可以设置active_method
这样的,是能够作为实例var访问active_method符号?
编辑的阐述:
所以给低于这个首发,我需要弄清楚如何界定“selected_method”,以便它定义了访问或实例变量如此“called_selected_method”呼叫“method_b”。
class MyClass
selected_method :method_b
def call_selected_method
end
private
def method_a
puts 'method_a'
end
def method_b
puts 'method_b'
end
end
c = MyClass.new
c.call_selected_method # should put 'method_b'
你能详细点吗?你说的财产究竟是“实际上是一种方法”?你在说'before_filter'吗? –
就像Chris说的那样,这个想法是'before_filter'是一个通过继承可用于'SomeController'的类方法。当调用'before_filter'(代码中的第3行)时,它将传递给它的参数列表保存在一个类变量中,以便稍后可以使用该类的其他方法。这些方法可以是实例方法或类方法。不言而喻,'*维护参数列表*'部分是以使设计有意义的方式完成的。 – Swanand