Railsには、実際にメソッドであるように見えるクールなプロパティがあります。たとえば、Rubyのクラスのメソッドとしてプロパティを作成する
class SomeController < ApplicationController
before_filter :authenticate!
end
これらは実際には何と呼ばれ、独自のものを作成しますか?例えば、私のモデルの一つで、私はいくつかの結果を処理するための内部方法を選択し、動的性質を持つことができるようにしたい:
class MyModel < ActiveRecord::Base
active_method :some_class_method
end
私はので、私はそのよう
active_method
を設定し、することができ、これを設定する方法を
active_methodシンボルにインスタンスvarとしてアクセスできますか?精緻化のための
編集:
ので、以下、このスターターを与え、私は「called_selected_methodは」「method_b」と呼ぶように、それはアクセサまたはインスタンス変数を定義するように、「selected_method」を定義する方法を理解する必要があります。
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行目)、クラス変数に渡された引数のリストが保持され、後でそのクラスの他のメソッドで使用できるようになります。これらのメソッドは、インスタンスメソッドまたはクラスメソッドです。 '*引数のリストを保持する*'の部分は、設計理にかなった方法で行われることは言うまでもない。レール3にある – Swanand