Ich habe zwei Klassen, A
und B
. B gehört zu A und A hat viele Bs.Aufruf einer Klassenmethode aus einer Klasse mit einer Beziehung mit vielen Beziehungen
Ich möchte eine Methode in A aufrufen, die mehrere, aber nicht notwendigerweise alle Instanzen von B betrifft, die zu ihm gehören.
ich versuchte, das Verfahren in B zu setzen und es so nennen:
class A
has_many :bs
def method_to_update_many(array_of_the_many_attributes)
array_of_the_many_attributes.each{ |n| self.bs.find_by(attribute:n).method_to_edit(update)
end
end
class B
belongs_to :a
def method_to_edit(update)
update_attribute(:attribute, update)
end
end
und durch das Verfahren A wie folgt setzen:
class A
has_many :bs
def update_a_b(b_identifier, update)
the_b = self.bs.find_by(identifier: b_identifier)
the_b.update_attribute(:attribute, update)
end
end
class b
belongs_to :a
end
Es scheint, dass alles, was ich versuche nicht, weil B wird über einen CollectionProxy aufgerufen, wenn er in Bezug auf A aufgerufen wird.
Verwenden Sie einfach 'B.find_by'. –
Ich bin mir nicht ganz sicher, ob ich deine Frage verstehe, aber '# find_by' wird nur einen Datensatz zurückgeben. Sie möchten wahrscheinlich '# where' verwenden – sixty4bit