【问题标题】:Active Record - Get the second, third.. item in a database (without ID)Active Record - 获取数据库中的第二个、第三个.. 项(无 ID)
【发布时间】:2023-04-05 12:42:01
【问题描述】:

如何检索数据库中的第二个、第三个 .. 条目。我不想使用 rails 生成的自动递增 id。

当我从我的数据库中删除条目时,ID 继续增加。

所以我的数据库会有

id : 210 (Even thought it's currently the first value)
id : 211 (Even thought it's currently the second value)

我知道“Phone.first”会返回第一个我如何获得第二个。

子问题-
Destroy_all/delete_all -
仅删除项目,我可以从数据库中删除所有条目并让数据库 ID 从一个开始而不删除表。当我遇到问题时。

【问题讨论】:

标签: ruby-on-rails database ruby-on-rails-3 activerecord


【解决方案1】:

假设你想要第四个用户:

 @users = User.limit(4)
 @fourth_user = @users[3]

关于您的第二个问题,destroy_all 应该可以解决问题,因为它会触发所有回调。请务必在您的关系中添加:dependent => :destroy

【讨论】:

  • 这很有效,尤其是在 MySQL 上,但请记住,如果没有定义“order”子句,返回的数据可能不会总是按相同的顺序排列。例如,在 Postgres 中,返回的记录与插入的顺序不同。
  • 或者更简洁:@fourth_user = User.limit(1).offset(3).first
  • 感谢您的回复 apneadiving,我有一个小问题;我正在尝试,@fourthChoice = FeedEntry.limit(4) @fourthChoice_user = @fourthChoice[3] 当我尝试显示 &lt;%= @fourthChoice_user %&gt; 时,我看到 <0x00000103547a50>
  • &lt;&gt;
【解决方案2】:

你需要的是

#n=2,3,4 etc    
.limit(1).offset(n) 

【讨论】:

  • 这似乎对大集合更有效。
【解决方案3】:

Model.second 已添加到 Rails 4.1.8。

所以你可以在相同或更高版本的 Rails 上使用它。

.third.fourth.fifth 也已添加到 ActiveRecord::FinderMethods

【讨论】:

    猜你喜欢
    • 2023-04-08
    • 1970-01-01
    • 2017-03-11
    • 1970-01-01
    • 2023-03-20
    • 2013-04-15
    • 1970-01-01
    • 1970-01-01
    • 2014-11-14
    相关资源
    最近更新 更多