我有两个班级,A
和B
。 B属于A,A有很多B。
我想在A中调用一个方法来影响多个,但不一定是属于它的所有B实例。
我试图将方法放在B中并像这样调用它:
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
并将方法放在A中:
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
似乎我尝试的所有内容都失败了,因为在相对于A
调用时,通过CollectionProxy访问B答案 0 :(得分:0)
尚未完全理解,但我认为,您需要使用#where
和#update_all
代替#find_by
和#update_attribute
。像
self.bs.where(identifier: b_identifier).update_all(attribute: update)