gpt4 book ai didi

ruby-on-rails - 什么是仅基于外键属性的关联类?

转载 作者:行者123 更新时间:2023-12-03 22:56:00 26 4
gpt4 key购买 nike

简短:我有一个外键属性,想知道该外键字段的类(或引用表)是什么。

语境:

给定 2 个表:users(id, [other fields])issues(id, user_id, assigned_to, [other fields])
这是我的问题的事件记录(提取了不相关的部分)

class User < ActiveRecord::Base
...
end
class Issue < ActiveRecord::Base
belongs_to :user
belongs_to :assigned_user, :foreign_key => 'assigned_to', :class_name => 'User'
...
end

我想让用户可读的更改日志记录。例如更改分配的用户时,我想收到这样的消息: Assigned to is changed from Otto to Zoltan . ActiveRecord 有功能 changes这是一个很好的起点,但它只给我引用 ID-s。要转换为名称,我需要按 id 读取用户。

对于协会 :user这很容易,因为我只需要遵循约定。但是如何为 assigned_to 获取相同的信息属性(我想做一个通用的解决方案)?是否有可能弄清楚我们是否与给定的属性有关联?我们可以提取该关联的类吗?

最佳答案

首先,您可以使用 reflect_on_association获取所需关联的元数据。然后,从它的结果(它是 MacroReflection 后代)你可以找出这个类:

reflection = Issue.reflect_on_association(:assigned_user)
reflection.class # => ActiveRecord::Reflection::AssociationReflection
reflection.class_name # => 'User'

引用文档 herethere .

关于ruby-on-rails - 什么是仅基于外键属性的关联类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3234991/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com