Closed fushang318 closed 8 years ago
两个方法返回的,并不是scope,而是array,不能接kaminari的page等方法。
还需改善 @hengtangan2025
边界情况说明
studing_of_user studied_of_user 方法均还存在一些问题
当传入用户为空时,查询会报错,未达到需要的效果。
KcCourses::Course.studing_of_user(nil).count
Moped::Errors::OperationFailure: The operation: #<Moped::Protocol::Command
@length=110
@request_id=28
@response_to=0
@op_code=2004
@flags=[]
@full_collection_name="kc_courses_dev.$cmd"
@skip=0
@limit=-1
@selector={:count=>"kc_courses_courses", :query=>{"_id"=>{"$in"=>nil}}}
@fields=nil>
failed with error 2: "$in needs an array"
KcCourses::Course.studied_of_user(nil)
=> #<Mongoid::Criteria
selector: {"_id"=>{"$in"=>nil}}
options: {}
class: KcCourses::Course
embedded: false>
KcCourses::Course.studing_of_user(user)
=> #<Mongoid::Criteria
selector: {"_id"=>{"$in"=>[nil]}}
options: {}
class: KcCourses::Course
embedded: false>
KcCourses::Course.studing_of_user(user)
=> #<Mongoid::Criteria
selector: {"_id"=>{"$in"=>[nil, BSON::ObjectId('565588d2d4d123014e000004')]}}
options: {}
class: KcCourses::Course
embedded: false>
可以看出当没有学习记录的时候, id的限制条件为 [nil] , 如果只是 [] 的话,会更好一些。
修复以上,分页自然没有问题
我手动设置课件1-1学习进度100%之后
KcCourses::Course.studing_of_user(user) 返回为空
KcCourses::Course.studied_of_user(user) 则返回此课程,这似乎与预期目标不符
增加两个 scope 查询 scope 查询用法可以参考 http://guides.ruby-china.org/active_record_querying.html#作用域