J'ai mis au point une méthode similaire pour faire progresser l'apprentissage des rails, je voudrais donc la résumer.
Une méthode` pour obtenir un enregistrement en définissant ʻid du modèle spécifié comme argument.
Par exemple ↓↓↓
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>
Vous pouvez voir que nous avons pu obtenir l'enregistrement id1.
C'est une méthode »qui peut être obtenue même dans des conditions autres que« id du modèle spécifié. (Bien sûr, vous pouvez également rechercher par identifiant)
Par exemple, si vous regardez le contenu de l'enregistrement décrit ci-dessus, la colonne de texte contient la valeur «aaaaa». J'aimerais avoir ceci.
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>
Vous spécifiez la colonne de texte comme argument et recherchez et obtenez l'enregistrement qui contient la valeur "aaaaa".
Une méthode utilisée pour récupérer et récupérer des données à l'aide d'une «instruction SQL». Lorsque vous obtenez l'enregistrement de id1
SELECT `tweets`.* FROM `tweets` WHERE `tweets`.`id` = 1
La déclaration select a été émise. Cette fois, je vais essayer d'obtenir l'enregistrement en attribuant cette instruction à une variable.
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>]
Vous l'avez obtenu! !!
Pour être honnête, je n'ai pas d'image lors de l'utilisation de find_by_sql, mais est-ce que je vais l'utiliser à l'avenir? .. .. ..
Recommended Posts