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

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 仅基于外键属性的关联类是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
短:我有一个外键属性,想知道该外键字段的类(或引用表)是什么.

语境:

给定2个表:users(id,[other fields])和issue(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从Otto更改为Zoltan. ActiveRecord具有功能更改,这是一个很好的起点,但它只给我参考ID.要翻译成名字,我需要通过id读取用户.

关联:用户很简单,因为我只需遵循约定.但是如何获取相同的信息为assign_to属性(我想做一个通用的解决方案)?是否可以弄清我们是否对给定的属性进行关联?我们可以提取该关联的类吗?

解决方法

首先,您可以使用reflect_on_association获取所需关联的元数据.然后,从它的结果(这是一个MacroReflection后代),你可以找到类:
reflection = Issue.reflect_on_association(:assigned_user)
reflection.class # => ActiveRecord::Reflection::AssociationReflection
reflection.class_name # => 'User'

请参阅文档herethere.

猜你在找的Ruby相关文章