gpt4 book ai didi

ruby-on-rails - 将 will_paginate 与多个模型一起使用(Rails)

转载 作者:行者123 更新时间:2023-12-04 07:30:20 25 4
gpt4 key购买 nike

很确定我在这里遗漏了一些非常简单的东西:

我正在尝试显示一系列包含两个不同模型实例的页面 - 配置文件和组。我需要他们按名称属性排序。我可以为每个模型选择所有实例,然后对它们进行排序和分页,但这感觉草率且效率低下。

我正在使用 mislav-will_paginate,并且想知道是否有更好的方法来实现这一点?就像是:

[Profile, Group].paginate(...)

将是理想的!

最佳答案

好问题,我多次遇到同样的问题。每次,我都通过编写自己的基于 sql 联合的 sql 查询来结束它(它适用于 sqlite 和 mysql)。然后,您可以通过传递结果(http://www.pathf.com/blogs/2008/06/how-to-use-will_paginate-with-non-activerecord-collectionarray/)来使用将分页。不要忘记执行查询以计算所有行。

一些代码行(未测试)

my_query = "(select posts.title from posts) UNIONS (select profiles.name from profiles)"
total_entries = ActiveRecord::Base.connection.execute("select count(*) as count from (#{my_query})").first['count'].to_i

results = ActiveRecord::Base.connection.select_rows("select * from (#{my_query}) limit #{limit} offset #{offset}")

是不是矫枉过正?也许可以,但是您的查询数量最少,并且结果是一致的。

希望能帮助到你。

注意:如果您从 http 参数中获取偏移值,则应使用 sanitize_sql_for_conditions(即:sql 注入(inject) ....)

关于ruby-on-rails - 将 will_paginate 与多个模型一起使用(Rails),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1091713/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com