【问题标题】:Rails Check If Record Is FirstRails 检查记录是否在前
【发布时间】:2023-03-22 02:01:02
【问题描述】:

我正在遍历记录列表。我需要检查一个记录是否先做 XYZ,如果不是做 ABC。不幸的是我不能这样做:

user = User.first 

user = User.find(:id)
user.first?

下面发布的解决方案

【问题讨论】:

  • 为什么不能调用 Model.first?
  • 我首先遍历一个列表。不能这样称呼它:user = User.first user.first
  • 你的问题到底是什么?
  • 没问题。更多的答案,因为我自己找不到这个。可以在这里做还是有指定区域?
  • @Fdwillis 我认为如果您发现了值得分享的内容,您可以分两步完成。首先将问题作为问题发布,然后将解决方案作为答案发布。

标签: ruby-on-rails oop methods


【解决方案1】:

1。制作方法来抓取下一条和上一条记录

def next 
  [Model].where("id > ?", id).first
end

def prev
  [Model].where("id < ?", id).last
end

2。制作方法来检查记录是否在前

def first?(record)
  [Model].first == record
end

3。检查记录是否在前

records.each do |record|
  if record.first?(record)
    record.update_attributes(attr: record.attr + record.attr)
  else
    prev_rec = [Model].find(record.id).prev
    record.update_attributes(attr: prev_rec.attr + record.attr )
  end
end
  1. 返回truefalse

【讨论】:

  • 你为什么要这样做?
【解决方案2】:

一个改进我会确保 [Model].first 是持久的,这样它就不会在每次运行循环时调用数据库。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-06
    • 2015-03-24
    • 2013-08-07
    • 1970-01-01
    • 2011-02-20
    相关资源
    最近更新 更多