我有一个地区>商店>设备层次结构,其中每个事物都可以具有config_set。
class Region < ActiveRecord::Base
has_many :stores, dependent: :destroy
has_one :config_set, as: :configurable
end
class Store < ActiveRecord::Base
has_many :devices
has_one :config_set, as: :configurable
belongs_to :region
end
class Device < ActiveRecord::Base
has_one :config_set, as: :configurable
belongs_to :store
end
class ConfigSet < ActiveRecord::Base
belongs_to :configurable, polymorphic: true
end
在config_set show
页面中,我想生成指向config_set所属的configurable
的链接。 link_to
在内部使用polymorphic_url
,需要@device
,[@store, @device]
或[@region, @store, @device]
。有没有一种简单的方法可以解决这个问题?
答案 0 :(得分:0)
发现了一个不太好的解决方案,滥用了polymorphic_url @device
和[nil, @device]
等同于ruby的try
:
<%= link_to 'Back', [@config_set.configurable.try(:store).try(:region), @config_set.configurable.try(:store) || @config_set.configurable.try(:region), @config_set.configurable] %>