Ich habe mehrere Bedingungen mit der where-Methode eingegrenzt, daher werde ich sie zusammenfassen.
Ich möchte eine Information über das Entwicklermodell erhalten, das kurz vor der Erstellung des Produktmodells erstellt wurde.
Produktmodell und Entwickler erstellen. Die beiden Modelle sind nicht zugeordnet. (Wagen Sie es hier) Das Entwicklermodell enthält Informationen (Developed_Product_Number) darüber, welche Art von Produkt hergestellt wurde. Das Produkt hat eine Produktnummer und diese beiden Werte sind gleich. (Wenn ja, lassen Sie es uns zuordnen, aber dieses Mal werden wir diese Bedingung verwenden.) Ich möchte den Wert des Entwicklers erhalten, der unmittelbar vor der Erstellung des Produkts von mehreren Entwicklern erstellt wurde, die dasselbe Produkt erstellt haben.
Lassen Sie uns den eigentlichen Code an die erste Stelle setzen.
product = Product.find(params[:id])
@Developer = Developer.where(developed_product_number: product.id).where('created_at < ?', product).order(created_at: :desc).limit(1)
Es ist so. Ich werde erklären
product = Product.find(params[:id])
Rufen Sie die ID des Zielprodukts ab und weisen Sie sie dem variablen Produkt zu. Geben Sie hier den Wert ein, der durch Hinzufügen von Bedingungen zur Variablen @Developer eingegrenzt wurde.
@Developer = Developer.where(developed_product_number: product.id).where('created_at < ?', product).order(created_at: :desc).limit(1)
Teilweise teilen.
@Developer = Developer.where(developed_product_number: product.number)
Hier wird die ID des früher erhaltenen variablen Produkts erhalten.
Dann die Werte eingrenzen.
where('created_at < ?', product).order(created_at: :desc).limit(1)
Hier haben wir die Informationen mehrerer Entwickler erfasst, die vor der Erstellung des Produkts erstellt wurden, und die Informationen des ersten Entwicklers, der aus der absteigenden Reihenfolge zählt. Es ist ziemlich lange her, daher muss der Code hier in Bereiche unterteilt werden und so weiter.
Recommended Posts