mirror of
https://github.com/jbranchaud/til
synced 2026-01-03 15:18:01 +00:00
Add Query A Single Value From The Database as a rails til
This commit is contained in:
@@ -9,7 +9,7 @@ and pairing with smart people at Hashrocket.
|
||||
|
||||
For a steady stream of TILs, [sign up for my newsletter](https://tinyletter.com/jbranchaud).
|
||||
|
||||
_924 TILs and counting..._
|
||||
_925 TILs and counting..._
|
||||
|
||||
---
|
||||
|
||||
@@ -582,6 +582,7 @@ _924 TILs and counting..._
|
||||
- [Perform SQL Explain With ActiveRecord](rails/perform-sql-explain-with-activerecord.md)
|
||||
- [Polymorphic Path Helpers](rails/polymorphic-path-helpers.md)
|
||||
- [Pretend Generations](rails/pretend-generations.md)
|
||||
- [Query A Single Value From The Database](rails/query-a-single-value-from-the-database.md)
|
||||
- [Read-Only Models](rails/read-only-models.md)
|
||||
- [Remove The Default Value On A Column](rails/remove-the-default-value-on-a-column.md)
|
||||
- [Rescue From](rails/rescue-from.md)
|
||||
|
||||
22
rails/query-a-single-value-from-the-database.md
Normal file
22
rails/query-a-single-value-from-the-database.md
Normal file
@@ -0,0 +1,22 @@
|
||||
# Query A Single Value From The Database
|
||||
|
||||
In a Rails context, most database interactions tend to happen through the ORM
|
||||
(e.g. `Book.find("123")`). There is a general purpose escape hatch that lets
|
||||
you execute a SQL statement directly against the DB -- `execute`. The resulting
|
||||
value of `execute`, however, tends to be a little clunky to work with.
|
||||
|
||||
If you just need a single value from the DB, use the
|
||||
[`select_value`](https://api.rubyonrails.org/classes/ActiveRecord/ConnectionAdapters/DatabaseStatements.html#method-i-select_value)
|
||||
method.
|
||||
|
||||
```ruby
|
||||
> statement = "select gen_random_uuid()"
|
||||
> ActiveRecord::Base.connection.select_value(statement)
|
||||
(5.0ms) select gen_random_uuid()
|
||||
=> "abc2e780-f442-418b-afa3-56f0ccd0a903"
|
||||
```
|
||||
|
||||
This is the cleanest way to get the result of a "single value" query.
|
||||
|
||||
If you happen to pass in a query that results in more than one row or column,
|
||||
it will return the value of the first column from the first row.
|
||||
Reference in New Issue
Block a user