我收到了任务:
向User模型类添加一个名为get completed count的方法,其中:
•接受用户作为参数
•使用聚合查询功能确定用户已完成的TodoItem的数量
- (提示:您正在寻找与特定用户关联的TodoItem的计数,其中已完成:true)
•返回计数
class User < ActiveRecord::Base
has_one :profile, dependent: :destroy
has_many :todo_lists, dependent: :destroy
has_many :todo_items, through: :todo_lists, source: :todo_items, dependent: :destroy
validates :username, presence: true
def get_completed_count
todo_items.length
end
end
Run Code Online (Sandbox Code Playgroud)
有没有人可以解释什么是完整的方法呢?
谢谢,迈克尔.
所以你写了"接受用户作为参数",所以你应该做以下事情:
def self.get_completed_count(user)
user.todo_items.where(completed: true).count
end
Run Code Online (Sandbox Code Playgroud)
你可以称之为:
User.get_completed_count(user)
Run Code Online (Sandbox Code Playgroud)
但上面的代码没有任何意义,因为更好的是将它作为实例方法:
def get_completed_count
self.todo_items.where(completed: true).count
end
Run Code Online (Sandbox Code Playgroud)
此代码将仅在实例上返回相同的结果.
你可以称之为:
User.find(id).get_completed_count
Run Code Online (Sandbox Code Playgroud)
我假设TodoItem已经完成了一个布尔值(更好地创建一个范围并在方法中使用此范围而不是where(completed: true)).
| 归档时间: |
|
| 查看次数: |
428 次 |
| 最近记录: |