调用Rails中的外部模型方法



我有两个模型,AB,其中A has_many B

A模型中,我有一个公共方法,它循环遍历所有相关的B对象并更新每个对象中的数据库字段。我想在B中使用这些方法,并在A中运行循环,但它们似乎没有正确保存。这种方法有什么问题吗?

下面是一个方法的例子:

def update_fields # A Method
  self.b.each do |b|
    b.b_method
  end
end
def b_method # B Method
  self.field = '5'
  self.save
end

运行这种类型的代码,没有保存到数据库中,输出也不更新。

我怎样才能完成这类事情?或者,是否所有的逻辑都需要在A控制器,即使它处理B字段?

如果a belongs_to b,那么a只有一个b -所以它没有意义,你试图在a方法中迭代多个b。

编辑

如果你调用即时方法,你不需要"self."Self是用来声明类方法的。

但最让我困惑的是,你试图在模型中保存一些东西。它属于控制器!

尝试使用update_attributes

def update_fields
  b.each { |x| x.update_attributes(field: "5") }
end

def b_method
  update_attributes(field: "5")
end

这最终成为验证的问题,所以一般方法有效。

相关内容

  • 没有找到相关文章

最新更新