2011-11-13 3 views
0

にインスタンス与えられたクラスメソッド私はレールにActiveModelを使用しています、私はこのような2つの方法に定義:コールルビー

def find_existing_task(task) 
    existing_one = Task.find(task.id) 
end 
def find_existing_person(person) 
    existing_one = People.find(person.id) 
end 

をしかし、私はこのような、より汎用的な方法が必要だと思う:

def find_existing(any_active_model_instance_with_id) 
    existing_one = ActiveModelClass.find(any_active_model_instance_with_id.id) 
end 

しかし、上記のタスクを与えられたクラスメソッドを呼び出す方法がわかりません。タスク名を指定せずにTask.findを呼び出すことができます

すべての解決策はありますか?ありがとう!

答えて

1

あなたはあなたの迅速な対応に感謝し、申し訳ありませんが、私は、例えば、それを明確に、find_existing方法は、コントローラで定義されていることはありませんでした次のコード

def find_existing(some_model) 
    existing_one = some_model.class.find(some_model.id) 
end 
+0

でそれを行うことができますTasksControllerなので、self.classはTasksControllerですか? – aaron

+0

と、TaskとTasksControllerのどちらにもメソッドを定義しないとどうなりますか? – aaron

+0

@aaron私の答えは、それがモデルやコントローラ内から呼び出されないかもしれないことを反映しています。あなたは何をしようとしているのですか? 'show'、' edit'、 'update'、' delete'アクションのためにあなたのコントローラーでレコードを取得しようとしていますか?あなたが達成しようとしていることを知るのに役立ちます。より良い方法があるかもしれません。 –