Ruby on Rails – 使用符号数组获取对象关联值
例如,有模型:
class Activity < ActiveRecord::Base belongs_to :event end class Event < ActiveRecord::Base has_many :activities attr_accessible :foo end
我可以通过使用activity.event.foo(足够简单)来获取活动的事件foo。
但是我想创建一个generics函数,首先找出一个对象是否有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])获取reflection类名的数组,或者通过belongs_to.name(例如[:event])获取belongs_to关联的符号数组。
考虑到从reflection中得到的东西,我如何获得对象的belongs_to的foo?
没有使用reflection,有没有更简单的方法来做到这一点?
我希望这很简单,我只想说明如何解决这个问题。 我也希望我有点清楚。 这是我的第一个Stack Overflow问题。
你可以这样做,但它不是很漂亮:
def get_foo(object) object.class.reflect_on_all_associations(:belongs_to).map do |reflection| object.send(reflection.name).try(:foo) end end
这将为您提供与该对象关联的所有foos的数组。 您可以将其更改为不执行map
并执行first
或其他操作。