【发布时间】:2009-08-16 09:15:11
【问题描述】:
这是我的架构
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 链接到菜单视图中的多态类,例如
<%= link_to menu.name, menu.menuable %>
这行得通,但是当我只想生成一个链接时,这会从数据库中检索菜单对象。你可以想象,如果我的菜单很大,这真的会让我的应用程序陷入困境。
当我将 menuable 字段定义为多态时,Rails 创建了 menuable_type 和 menuable_id。我可以用什么来生成多态页面的链接,而不是编写一个带有巨大 switch 语句的辅助函数(例如,如果我有大量可菜单的“子类”?)
【问题讨论】:
-
你可以使用多态路由来生成路径api.rubyonrails.org/classes/ActionDispatch/Routing/…
标签: ruby-on-rails ruby polymorphic-associations