Rails 3.2で作業している私は、subscribable_typeがネストされたリソースである場合とそうでない場合がある多態的なサブスクリプションモデルです。電子メールビューに完全なURLリンクを表示しようとしていますが、そのリソースがネストされているかどうかがわかりません。
ネストされたリソースを試してみるとurl_for @model
、が期待して失敗しurl_for [@parent, @model]
ます。残念ながら、Routesテーブルで定義されている親を見つける方法がわかりません。
ネストされたリソースのルートパスを特定する方法はありますか?モデルをルートに一致させることができれば、必要なIDを入力できます。
今のところ、parent_resource :model
トラバースできるというメソッドをモデルに定義しましたが、もっと良い方法があることを望んでいます。
私の中でroutes.draw
:
resources :projects do
resources :topics do
resources :comments
end
end
resources :subscriptions
(私はそれほど深く入れ子にするべきではないことを理解しています)
編集:追加情報
私のサブスクリプションモデルは、通知を管理するために使用するリソースです。サブスクライブ可能なタイプには、そのsubscribable_type/subscribable_idでのそのユーザーのサブスクリプションのオンとオフを切り替えるリンクが提供されます。
次にNotifier < ActionMailer::Base
、サブスクリプションインスタンスが提供されているを確認し、ユーザーにメールを送信します。
subscription.subscribable
その設定を通じて、トピックまたはプロジェクトの完全なURLを取得しようとしています。
この小さなケースでは、ヘルパーメソッドを使用して条件を打ち出すことができると思いますが、ネストされたモデルのペアが数十ある場合に、これにどのようにアプローチするかを知りたいと思います。