1

Rails プラグインを作成していますが、コントローラーが関連付けられているモデルを動的に判別できるようにする必要があります。たとえば、PeopleController がある場合、コントローラーが Person モデルを処理することを明確に判断する方法が必要です。

API を調べましたが、そのメソッドが見つかりませんでした。

ActiveSupportのような屈折トリックと組み合わせた正規表現としてこれを行う唯一の方法はありsingularizeますか?

もしそうなら、このアプローチに落とし穴はありますか? エッジケースとは?

4

3 に答える 3

1

コントローラーとモデルが関係しているというのは慣習にすぎないので、実際にそれを行う方法はありません。

あなたは何をしようとしているのですか?

于 2010-02-10T00:09:02.937 に答える
0

KandadaBoggu の回答を少し変更して、コントローラーのインスタンスをより自動化しています。

# In a controller instance
klass_name = self.class.to_s.gsub(/Controller$/, '').singularize
klass = klass_name.constantize
于 2010-02-10T18:20:31.303 に答える
0

モデル名とコントローラー名の Rails 命名規則に従っていると仮定すると、次のようにしてモデル名/クラスを取得できます。

# In a controller instance
klass = controller_name.classify.constantize
于 2010-02-10T05:57:00.640 に答える