Ich arbeite an einem Edelstein, um einen kleinen Teil der zugehörigen ActiveRecord Objekte zu exportieren.Gibt es eine bessere Möglichkeit, Kinder und Eltern eines ActiveRecord-Objekts zu finden?
Hier ist, wie ich derzeit finde Eltern & Kinder.
# belongs_to, based on column names with an _id suffix
def belongs_to_relations(ar_instance)
columns = ar_instance.class.column_names
parents = columns.map{ |c| c if c =~ /_id/ }.reject{ |c| c.nil? }
parents.map!{ |parents| parents.gsub('_id', '') }
end
# has_many, based on existence of a xxx_id column in other tables
def has_many_relations(ar_instance)
column_name = "#{ar_instance.class.name.underscore}_id"
descendents = ActiveRecord::Base.connection.tables
descendents.reject!{ |table| false unless table.classify.constantize rescue true }
descendents.reject!{ |table| true unless table.classify.constantize.column_names.include?(column_name) }
end
Gibt es eine bessere Möglichkeit, diese Beziehungen zu finden? Das funktioniert ok, aber entfernte Beziehungen, wie: durch, muss ich manuell angeben.