我正在学习Ruby on Rails和SQlite。当我在寻找创建种子文件的方法时,我看到了种子文件的一些有趣的代码:
Classroom.all.each_with_index do |classroom, i|
classroom.students << [Student.limit(8).offset(i*2)]
end
我知道它是在课堂上插入学生但不了解limit
和offset
正在做什么。
我尝试在线搜索并发现https://apidock.com/rails/ActiveRecord/QueryMethods/offset,但它并没有让我明白。
有关资源的任何建议,我可以在这个或任何可以帮助我理解这个的例子中找到更多信息吗?
答案 0 :(得分:1)
当然(详见http://guides.rubyonrails.org/active_record_querying.html)
Student
表示从Student表中获取 all 行的SQL查询。
limit
和offset
等每个方法正在做的是修改Rails正在构建的基础SQL查询。
limit(8)
表示只获得8件商品。
offset(i*2)
表示开始将i * 2个元素放在列表中。
如果它只是一个数组(而不是数据库表),那就像说
student[i*2..i*2+8-1]
注意我想知道这段代码是否有错误? offset(i*8)
更有意义。然后,这段代码将由8名学生组成,并将他们分成不同的班级。
因为这将是前8名学生,将他们放在第一个教室,然后带3-10名学生并将他们放在下一堂课等,所以有些学生最多会有4个不同的班级!