如何在两个ActiveRecord行之间镜像一个值,最佳方法是什么?

3

我有一个user#show视图和一个membership#show视图。

users#show视图的路径为

/users/john-mcenroe

membership#show视图将具有以下路径:

/org-name/memberships/john-mcenroe

换句话说,用户的“show”和机构的“show”视图都具有相同的短语

为了提高查找速度,我假设最好的方法是在成员资格模型上也从用户中镜像slug列。 为此,我创建了一个用户观察器,每当用户的slug更改时,就会更新成员资格。

观察器是否是将反规范化数据回显到数据库表的最佳方法? 是否有一种本地的rails方法来代替这个(例如counter_cache)?

1个回答

0
如果用户和会员之间有关联,那么您可以使用“委托”方法。
例如:
class Membership
    belongs_to :user
    delegate :slug, :to => :user
end

在这种情况下,“slug”存储在用户模型上,您不需要将数据复制到会员模型中。

这并没有真正帮助。它仍然执行 user.slug,这会执行查询,我相信 OP 正试图避免这种情况。 - Lee Jarvis

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接