了解rails委托方法

时间:2017-09-12 01:28:07

标签: ruby-on-rails ruby

我正在尝试了解Rails开箱即用的委托方法。这就是我想要做的。所以,我Accounts有{_ 1}}。所以我正在尝试计算帐户的任务数量,这就是我目前正在做的事情:

Tasks

非常标准的东西。但我正在尝试将此方法移动到委托方法。我试过这个,但它不起作用

def total_tasks
  tasks.count
end

那不行,我真的没想到。有没有办法可以做到这一点?

1 个答案:

答案 0 :(得分:5)

delegate :count, to: :tasks, prefix: "total"

这只是创建方法的元编程:

def total_count
  tasks.send(:count)
end

虽然因为你应该使用size而不是count,因此这不太适合委托,因为后者总是会导致数据库查询,即使关联已被急切加载。

def tasks_total
  tasks.size # prevents n+1 query issue.
end

为什么你想要为此创建一个方法超出我的范围,因为它实际上是要输入的另一个字符。