ruby-on-rails - 如何连接两个 Ruby on Rails 模型中的列?
问题描述
我正在将http://bngb.org重写为 Rails 项目(我的第一个项目)。我已经阅读了 Michael Hartl 的教程。我已经创建Group
和User
模型。一个组belongs_to
一个用户和一个用户has_one
组,它随用户一起销毁。
每个组的联系电子邮件地址应该是拥有该组的用户的电子邮件地址,并且应该在更改时更改。我看到我可以group.user.email
在我的视图中检索地址,但看起来这每次都会调用数据库而不是使用缓存数据。group.email
拥有链接到的列的正确方法是user.email
什么?我可以用我拥有的东西来做吗,还是需要第三张表链接has_one through:
?
非常感谢您的帮助!
杰夫·柯维
解决方案
您可以使用 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
,然后将其保存为属性,因此所有后续调用都不需要命中数据库。
推荐阅读
- php - 重定向工作的PHP问题
- json - 如何将 VBA-JSON 输出移动到工作表中的特定单元格?
- javascript - 如何使用 DropzoneJs 发送身份验证令牌标头?
- c++ - DX 旋转 2D 图像
- checkbox - Bootstrap 内联复选框布局狭窄
- java - JPAMetaModelEntityProcessor:“无法确定属性的类型
" 通过 orm.xml 映射时 - java - 为什么使用 RestTemplate 访问 Spring MVC 时我的 Session 不见了?
- go - 运行时错误:无效的内存地址或 nil 指针取消引用,再次
- ruby-on-rails - 如何防止 ActiveRecord 规范化 DateTime?
- javascript - 带有表单的组件在 ReactJS 中不断刷新页面