从具有多个关系的类调用类方法

时间:2016-07-20 20:06:54

标签: ruby methods rails-activerecord

我有两个班级,AB。 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

1 个答案:

答案 0 :(得分:0)

尚未完全理解,但我认为,您需要使用#where#update_all代替#find_by#update_attribute。像

这样的东西
self.bs.where(identifier: b_identifier).update_all(attribute: update)