【发布时间】:2021-10-10 16:21:52
【问题描述】:
我想用我的 Rails API 在分页中显示用户列表,但是在显示用户之前我没有什么限制,我想检查有权访问视图文件的用户,这里是代码:
def verified_client
conditions = {}
conditions[:user_name] = fetch_verified_users_with_api_call # returns[user_1,user_2, ....]
@users = User.where(conditions).where('access NOT LIKE ?', 'admin_%').ordered
will_paginate(@users, params[:page])
end
Q1) 当用户尝试获取后续页面(第 2 页、第 3 页.. 第 n 页)时,我是否不必进行 sql 调用?
Q2) 当verified_users 列表返回百万的物品时会发生什么?我怀疑 SQL 会失败
我可以在查询中使用限制和偏移量,但我不知道总结果和页面大小来实现相同的结果我必须再触发一次 SQL 调用来获取计数并编写自己的逻辑来获取页数.
生成的 SQL:
select *
from users
where user_name IN (user_1, user_2 .... user_10000)
AND (access NOT LIKE 'admin_%')
【问题讨论】:
-
请提供生成的SQL。
-
select * from users where user_name IN (user_1, user_2 .... user_10000) AND (access NOT LIKE 'admin_%')
标签: mysql ruby-on-rails activerecord