以编程方式获取 Rails 4 中的 belongs_to 关联的类
Posted
技术标签:
【中文标题】以编程方式获取 Rails 4 中的 belongs_to 关联的类【英文标题】:Programatically get the class of the belongs_to association in Rails 4 【发布时间】:2013-11-16 10:20:07 【问题描述】:假设我有一些通过一对多关系链接的类:
class A
field :name, type: String
has_many :b
class B
field :title, type: String
belongs_to :a
假设我有一个 B 的实例,我想检索他的 belongs_to 关系的类名(在我的示例中是“A”,而不是链接到我的 B 对象的类型 A 的实例)。
a = A.new name: 'my A object'
b = B.new title: 'my B object', a: a
assert_equal b.get_relationships(:belongs_to), ['A'] #substitute "get_relationships" with something that actually exists :)
我该怎么办?
我在类似的主题(使用反射)上查看了这个answer,但我无法让它工作。也许 Rails 4 发生了一些变化?
【问题讨论】:
B.reflect_on_all_associations(:belongs_to).map(&:name)
【参考方案1】:
B.reflect_on_all_associations(:belongs_to).map(&:name)
或
b.class.reflect_on_all_associations(:belongs_to).map(&:name)
【讨论】:
您应该使用:class_name
代替class_name
选项,例如belongs_to :author, class_name: 'User'
。
如果有多个类与您的 b 对象具有 has_many 关联怎么办?以上是关于以编程方式获取 Rails 4 中的 belongs_to 关联的类的主要内容,如果未能解决你的问题,请参考以下文章