# say you have a class Thing
class Thing < ActiveRecord::Base
belongs_to :foo
belongs_to :bar
end
# this would return a hash of all `belongs_to` reflections, in this case:
# { :foo => (the Foo Reflection), :bar => (the Bar Reflection) }
reflections = Thing.reflections.select do |association_name, reflection|
reflection.macro == :belongs_to
end
# And you could iterate over it, using the data in the reflection object,
# or just the key.
#
# These should be equivalent:
thing = Thing.first
reflections.keys.map {|association_name| thing.send(association_name) }
reflections.values.map {|reflection| thing.send(reflection.name) }
4条答案
按热度按时间hiz5n14c1#
您可以使用Reflection中的reflection_on_all_associations方法例如:
字符串
bvn4nwqk2#
您可以使用类的
reflections
哈希来完成此操作。可能有更简单的方法,但这是有效的:字符串
mwkjh3gx3#
字符串
当然,您也可以传递:has_many或任何其他关联
cyej8jka4#
最新消息:
在Rails 7上运行,该方法现在是:
字符串