创建一个更改属性(整数)rails的方法

时间:2015-06-23 23:33:52

标签: ruby-on-rails attributes

我的integer对象表格中Parent名为completion_status,默认值为0。我喜欢将其设置为与"@parent.child.count('completion', :distinct => true)"相同的值,但我不知道如何在控制器中执行此操作,或者即使控制器是执行此操作的最佳位置。

我知道这里没有太多信息,但如果我遗漏了一些重要信息,请告诉我。我在这里有一个大脑放屁的时刻。

编辑:刚试过:

def set_completion 
   @app = App.find(params[:id]) 
   @app.update_attribute(:completion_status => @app.elements.count('completion', :distinct => true))
end

1 个答案:

答案 0 :(得分:2)

根据我的理解,每次创建新孩子时,此值都可能会发生变化,因为创建新子项会更改@parent.child.count的值,因此您希望每次创建时都重置completion_status或更新一个新的孩子,所以一种方法是在ChildrenController的创建和更新操作中 - 假设你有一个:

def create 
  @parent = Parent.find(params[:parent_id]
  @child = @parent.children.build(child_params)
  if @child.save
    @parent.completion_status = @parent.children.count // this is the line to add
  end
end

这段代码可以用不同的方式进行改进,但我只是给你一个例子。