首页 > 解决方案 > 如何连接两个 Ruby on Rails 模型中的列?

问题描述

我正在将http://bngb.org重写为 Rails 项目(我的第一个项目)。我已经阅读了 Michael Hartl 的教程。我已经创建GroupUser模型。一个组belongs_to一个用户和一个用户has_one组,它随用户一起销毁。

每个组的联系电子邮件地址应该是拥有该组的用户的电子邮件地址,并且应该在更改时更改。我看到我可以group.user.email在我的视图中检索地址,但看起来这每次都会调用数据库而不是使用缓存数据。group.email拥有链接到的列的正确方法是user.email什么?我可以用我拥有的东西来做吗,还是需要第三张表链接has_one through:

非常感谢您的帮助!
杰夫·柯维

标签: ruby-on-railsdatabasemodel

解决方案


您可以使用 ActiveRecord 的after_find回调将其添加到属性中。这是一个例子:

class Group < ApplicationRecord
  belongs_to :user
  attr_accessor :email

  after_find :attach_email

  private

  def attach_email
    self.email = user.email
  end
end

当从数据库中检索对象时,它将进行初始数据库调用user,然后将其保存为属性,因此所有后续调用都不需要命中数据库。


推荐阅读