【问题标题】:What's the best way to mirror a value across two ActiveRecord rows?跨两个 ActiveRecord 行镜像值的最佳方法是什么?
【发布时间】:2012-09-24 15:35:29
【问题描述】:

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

users#show 视图有路径

/users/john-mcenroe

membership#show 视图将包含路径

/org-name/memberships/john-mcenroe

换句话说,user#show 和 org#show 视图都有相同的 slugs

为了查找速度,我认为最好的办法是在会员模型上也反映来自用户的 slug 列。为此,我创建了一个用户观察者,只要用户的 slug 发生变化,它就会更新成员资格。

观察者是跨数据库表回显非规范化数据的最佳方式吗?有没有一种原生的 Rails 方式来代替(相当于 counter_cache 的不是)?

【问题讨论】:

    标签: ruby-on-rails activerecord


    【解决方案1】:

    如果用户和会员之间存在关联,则可以使用“委托”方法。

    例如:

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

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

    【讨论】:

    • 这并没有真正的帮助。它仍然执行 user.slug 执行我相信 OP 试图避免的查询
    猜你喜欢
    • 2020-03-27
    • 1970-01-01
    • 2011-01-31
    • 2022-01-18
    • 2020-09-27
    • 2018-08-20
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多