2012-09-24 30 views
3

我有一个user#show视图,还有一个membership#show视图。跨两个ActiveRecord行镜像值的最佳方式是什么?

users#show视图具有路径

/users/john-mcenroe 

membership#show视图将具有路径

/org-name/memberships/john-mcenroe 

换句话说,用户#节目和org#放映视图都具有相同的蛞蝓

为了查找速度,我假设要做的最好的事情是镜像在会员模式中也可以从用户那里得到子弹列。为此,我创建了一个用户观察者,当用户的slug改变时更新成员资格。

观察员是跨数据库表回显非标准化数据的最佳方式吗?是否有一个本地轨道的方式来做到这一点(相当于isntance的counter_cache)?

回答

0

如果用户和成员资格之间存在关联,那么您可以使用“委托”方法。

例如:

class Membership 
    belongs_to :user 
    delegate :slug, :to => :user 
end 

在这种情况下,“弹头”被存储在用户模式,你不需要将数据复制到会员制模式。

+0

这并没有真正的帮助。它仍然执行'user.slug',它执行我相信OP正试图避免的查询 –

相关问题