Ruby on Rails - 获取带有符号数组的对象关联值
Ruby on Rails - Get object association values with array of symbols
例如,有以下型号:
class Activity < ActiveRecord::Base
belongs_to :event
end
class Event < ActiveRecord::Base
has_many :activities
attr_accessible :foo
end
我可以使用 activity.event.foo 获取 activity 的事件 foo(足够简单)。
但我想创建一个通用函数,首先找出一个对象是否具有 belongs_to 关联,然后通过 belongs_to 关联获取该对象的 foo(假设所有对象都有一个 foo通过 belongs_to 协会)?
到目前为止,我有以下几点让我反思:
def get_foo(object)
object.class.reflect_on_all_associations(:belongs_to).each do |belongs_to|
return object.??????
end
end
我可以通过 belongs_to.klass(例如 [Event])获取反射的 class 名称数组,或者通过 [=32= 获取 belongs_to 关联的符号数组](例如 [:event])。
根据我从反射中得到的信息,如何获取对象的 belongs_to 的 foo?
有没有不使用反射的更简单的方法?
我希望这很简单,我只是在思考如何解决这个问题。我也希望我有点清楚。这是我的第一个 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
这将为您提供与该对象关联的所有 foo 的数组。您可以将其更改为不执行 map
并执行 first
或其他操作。
例如,有以下型号:
class Activity < ActiveRecord::Base
belongs_to :event
end
class Event < ActiveRecord::Base
has_many :activities
attr_accessible :foo
end
我可以使用 activity.event.foo 获取 activity 的事件 foo(足够简单)。
但我想创建一个通用函数,首先找出一个对象是否具有 belongs_to 关联,然后通过 belongs_to 关联获取该对象的 foo(假设所有对象都有一个 foo通过 belongs_to 协会)?
到目前为止,我有以下几点让我反思:
def get_foo(object)
object.class.reflect_on_all_associations(:belongs_to).each do |belongs_to|
return object.??????
end
end
我可以通过 belongs_to.klass(例如 [Event])获取反射的 class 名称数组,或者通过 [=32= 获取 belongs_to 关联的符号数组](例如 [:event])。
根据我从反射中得到的信息,如何获取对象的 belongs_to 的 foo?
有没有不使用反射的更简单的方法?
我希望这很简单,我只是在思考如何解决这个问题。我也希望我有点清楚。这是我的第一个 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
这将为您提供与该对象关联的所有 foo 的数组。您可以将其更改为不执行 map
并执行 first
或其他操作。