これが私のスキーマです
class Menu < ActiveRecord::Base
belongs_to :menuable, :polymorphic => true
end
class Page < ActiveRecord::Base
has_one :menu, :as => :menuable
end
class Links < ActiveRecord::Base
has_one :menu, :as => :menuable
end
link_to を使用して、Menu ビューでポリモーフィック クラスにリンクしたい。
<%= link_to menu.name, menu.menuable %>
これは機能しますが、リンクを生成することだけが必要な場合に、データベースからメニュー可能なオブジェクトを取得します。メニューが大きいと、アプリケーションが本当に動かなくなることは想像に難くありません。
menuable フィールドをポリモーフィックとして宣言すると、Rails によって menuable_type と menuable_id が作成されました。多態的なページへのリンクを生成するには、巨大な switch ステートメントを使用してヘルパー関数を記述する以外に、何を使用できますか (たとえば、多数のメニュー可能な「サブクラス」がある場合)。