Ich habe eine ähnliche Methode entwickelt, um das Erlernen von Schienen voranzutreiben, daher möchte ich sie zusammenfassen.
Eine Methode zum Abrufen eines Datensatzes, indem die ID des angegebenen Modells als Argument festgelegt wird.
Zum Beispiel ↓↓↓
pry(main)> Tweet.find(1)
(0.4ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483
Tweet Load (0.3ms) SELECT `tweets`.* FROM `tweets` WHERE `tweets`.`id` = 1 LIMIT 1
=> #<Tweet:0x00007fa3fd3800d8
id: 1,
text: "aaaaa",
image: "",
created_at: Mon, 13 Jul 2020 06:42:56 UTC +00:00,
updated_at: Mon, 13 Jul 2020 06:42:56 UTC +00:00,
user_id: 1>
Sie können sehen, dass wir den id1-Datensatz erhalten konnten.
Es ist eine Methode, die auch unter anderen Bedingungen als der ID des angegebenen Modells erhalten werden kann. (Natürlich können Sie auch nach ID suchen)
Wenn Sie sich beispielsweise den oben beschriebenen Datensatzinhalt ansehen, enthält die Textspalte den Wert "aaaaa". Ich würde das gerne bekommen.
pry(main)> Tweet.find_by(text: "aaaaa")
Tweet Load (0.4ms) SELECT `tweets`.* FROM `tweets` WHERE `tweets`.`text` = 'dv sdvdfsv' LIMIT 1
=> #<Tweet:0x00007fa3db12bd90
id: 1,
text: "aaaaa",
image: "",
created_at: Mon, 13 Jul 2020 06:42:56 UTC +00:00,
updated_at: Mon, 13 Jul 2020 06:42:56 UTC +00:00,
user_id: 1>
Sie geben die Textspalte als Argument an und suchen und erhalten den Datensatz, der den Wert "aaaaa" enthält.
Eine Methode zum Abrufen und Abrufen von Daten mithilfe einer SQL-Anweisung. Wenn Sie den Datensatz von id1 erhalten
SELECT `tweets`.* FROM `tweets` WHERE `tweets`.`id` = 1
Die select-Anweisung wurde ausgegeben. Dieses Mal werde ich versuchen, den Datensatz zu erhalten, indem ich diese Anweisung einer Variablen zuweise.
pry(main)> query = "SELECT `tweets`.* FROM `tweets` WHERE `tweets`.`id` = 1"
=> "SELECT `tweets`.* FROM `tweets` WHERE `tweets`.`id` = 1"
[9] pry(main)> Tweet.find_by_sql(query)
Tweet Load (0.3ms) SELECT `tweets`.* FROM `tweets` WHERE `tweets`.`id` = 1
=> [#<Tweet:0x00007fa3bc0e36e0
id: 1,
text: "aaaaa",
image: "",
created_at: Mon, 13 Jul 2020 06:42:56 UTC +00:00,
updated_at: Mon, 13 Jul 2020 06:42:56 UTC +00:00,
user_id: 1>]
Sie haben es erhalten! !!
Um ehrlich zu sein, ich habe kein Bild, wenn ich find_by_sql verwende, aber werde ich es in Zukunft verwenden? .. .. ..
Recommended Posts