Bit*_*ise 1 ruby ruby-on-rails
我正在尝试了解Rails开箱即用的委托方法.这就是我想要做的.所以,我有Accounts那么多Tasks.所以我试图让帐户的任务计数,这是我目前正在做的事情:
def total_tasks
tasks.count
end
Run Code Online (Sandbox Code Playgroud)
很标准的东西.但我正在尝试将此方法移动到委托方法.我试过这个,但它不起作用
delegate :count, to: :task, prefix: "total"
Run Code Online (Sandbox Code Playgroud)
这没用,我真的没想到会这样.有没有办法可以做到这一点?
delegate :count, to: :tasks, prefix: "total"
Run Code Online (Sandbox Code Playgroud)
这只是创建方法的元编程:
def total_count
tasks.send(:count)
end
Run Code Online (Sandbox Code Playgroud)
虽然因为你应该使用size而不是count因为后者总是会导致数据库查询,即使关联已被急切加载,这也不适合委托.
def tasks_total
tasks.size # prevents n+1 query issue.
end
Run Code Online (Sandbox Code Playgroud)
为什么你想为此创建一个方法超出了我的想法,因为它实际上是另一个要输入的字符.
| 归档时间: |
|
| 查看次数: |
65 次 |
| 最近记录: |