こんにちは
私はいくつかの動的に定義されたメソッドを構築し、いくつかのスコープメソッドを次のように連鎖させようとしています:
define_method "#{instance_name_method}" do
Kernel.const_get(model_name).___some_chaining methods basd on condition
end
そのための 1 つのアイデアは次のようなものです。
method_action = model_name #ex Post
['latest', 'old', 'deleted','latest_deleted','archived'].each do |prefix|
method_action << ".deleted" if prefix.match('deleted')
method_action << ".latest" if prefix.match('latest')
method_action << ".old" if prefix.match('old')
define_method "#{prefix}_#{instance_name_method}" do
eval( method_action)
end
end
投稿では、最新、古いスコープを定義しています...
これで、次のようなメソッドを呼び出すことができます:
Post.latest or Post.old_archived etc...
私の質問は次のとおりです。
これを行うためのより良いアプローチはありますか? (active record find に似ていますが、method_missing はありません) これはちょっと醜いです...
メソッドを動的に連鎖するにはどうすればよいですか?
send('method',var) については既に知っていますが、条件に基づいて文字列からこれらのメソッドを結合する方法がわかりません...
ありがとう