【问题标题】:User's position in Ruby on Rails, Devise gem用户在 Ruby on Rails、Devise gem 中的位置
【发布时间】:2018-12-31 06:17:40
【问题描述】:

我想在show 页面上显示用户的位置。例如,“您的位置是 195119 中的 1921”。 devise gem有什么有效的方法来做这样的事情吗?

我的想法是在users 表中添加一个额外的列,并使其为每个条目自动递增。但是,我认为有更好的方法可以做到这一点。非常感谢您的帮助和时间。

【问题讨论】:

    标签: ruby-on-rails ruby devise ruby-on-rails-5


    【解决方案1】:

    您的用户模型有许多记录,这些记录与 id 一起存储,该 id 已经自动递增。添加类似于idposition是没有用的。

    您可以通过跟踪用于被删除的少数记录来实现它,并且您希望根据现有记录进行定位。

    @position = User.all.ids.sort.index(@user.id)
    

    这里@user 是调用“显示”操作以获取@position 的对象

    【讨论】:

    • 非常感谢,在 Google 中找不到正确答案。
    【解决方案2】:

    如果您有一个位置列,如果某些记录被删除,您可能需要更新它。

    给定一个user 对象,您可以进行两次计数查询。

    count_1 = User.where("id <= ?", user.id).count
    

    count_1是用户的位置

    count_2 = User.count
    

    count_2 是总职位

    【讨论】:

    • 感谢您的回答,非常感谢您的帮助先生!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多