【发布时间】:2015-12-04 20:25:09
【问题描述】:
例如,有模型:
class Activity < ActiveRecord::Base
belongs_to :event
end
class Event < ActiveRecord::Base
has_many :activities
attr_accessible :foo
end
我可以通过activity.event.foo获取活动的事件foo(很简单)。
但是我想创建一个通用函数,它首先确定一个对象是否具有belongs_to 关联,然后通过belongs_to 关联获取该对象的foo(假设所有对象都通过belongs_to 关联具有一个foo)?
到目前为止,我有以下几点给了我一个反思:
def get_foo(object)
object.class.reflect_on_all_associations(:belongs_to).each do |belongs_to|
return object.??????
end
end
我可以通过belongs_to.klass(例如[Event])获取反射的类名数组,或者通过belongs_to.name(例如[:event])获取belongs_to关联的符号数组。
根据我从反射中得到的信息,我如何获得对象的 belongs_to 的 foo?
有没有更简单的方法可以在不使用反射的情况下做到这一点?
我希望这很简单,我只是在讨论如何解决这个问题。我也希望我有点清楚。这是我的第一个 Stack Overflow 问题。
【问题讨论】:
-
delegate 会帮助你吗?
-
不确定委托是否会帮助我。这将要求我遍历每个模型并将属性委托给与它有 belongs_to 关系的每个模型。如果我已经有了关联的符号,似乎必须有一种方法来获得关联。
object.association(belongs_to).foo之类的东西。
标签: ruby-on-rails class reflection symbols