我有user#show
视图和membership#show
视图。
users#show
视图的路径为
/users/john-mcenroe
membership#show
视图将具有路径
/org-name/memberships/john-mcenroe
换句话说,用户#show和org#show视图都有相同的slu
为了查找速度,我认为最好的办法是在成员模型上镜像用户的slug列。为此,我创建了一个用户观察器,可以在用户的slug更改时更新成员资格。
观察者是跨数据库表回显非规范化数据的最佳方法吗?是否有一种原生的rails方式来代替(相当于对isntance的counter_cache)?
答案 0 :(得分:0)
如果用户和成员之间存在关联,那么您可以使用“委托”方法。
例如:
class Membership
belongs_to :user
delegate :slug, :to => :user
end
在这种情况下,“slug”存储在用户模型中,您无需将数据复制到成员资格模型。