Comments (2)
In this case, reflection.association_primary_key
returns ["id"]
, which, when passed to the pluck method, is further nested into [["id"]]
due to the splat operator (*keys)
in the method's parameters. Consequently, this nesting results in keys.first
within the pluck method being ["id"]
, rather than the expected straightforward "id"
.
When using the Enumerable#pluck method with an array argument, like [:id, :post_id]
, it leads to unexpected behavior. The method interprets the array as a single, composite attribute, which doesn't match any keys in the hash, resulting in nil values for each element:
[{ id: 1, post_id: 1 }, { id: 2, post_id: 1 }, { id: 3, post_id: 1 }].pluck([:id, :post_id])
# Output: [nil, nil, nil]
To accurately extract multiple attributes, each attribute name should be passed as a separate argument. This allows the method to correctly identify and retrieve the values for each attribute from the hashes:
[{ id: 1, post_id: 1 }, { id: 2, post_id: 1 }, { id: 3, post_id: 1 }].pluck(:id, :post_id)
# Output: [[1, 1], [2, 1], [3, 1]]
# This works too
[{ id: 1, post_id: 1 }, { id: 2, post_id: 1 }, { id: 3, post_id: 1 }].pluck(*[:id, :post_id])
# Output: [[1, 1], [2, 1], [3, 1]]
We can utilize the splat operator (*) to distribute the array's elements as separate arguments to the method.
target.pluck(*reflection.association_primary_key)
from rails.
Related Issues (20)
- has_many through alias_method HOT 4
- create_table `force` option drops table when `if_not_exists` option is present
- Add a `--db-prepare` option to run check and run migrations when booting the server
- `DuplicableTest#test_duplicable` failure with ruby 3.4.0dev HOT 2
- Path traversal in AcitveStorage, and lead RCE (Need secret_key_base) HOT 1
- Add .test to default allowed host in development mode HOT 1
- Use ruby file: ".ruby-version" when possible HOT 6
- Exceptions raised from templates should show template code not compiled methods HOT 7
- Syntax errors are not presented correctly in ERB templates HOT 2
- Missing view template error page example does not account for nested controller paths HOT 1
- DatabaseTasks run in both development and test environments when RAILS_ENV=development HOT 3
- Rails 7.1.* Deserializes Date Range with Infinities incorrectly with Postgres adapter HOT 2
- ActionDispatch `recognize_path` trips over domain constraints HOT 2
- `update_all` raises an exception with an empty list of attributes but `update` not HOT 1
- ActionView::Template::Error (undefined method `variant' for an instance of ActiveStorage::Attached::One): HOT 3
- Rails 7.1: `ActiveRecord::Base#query_constraints` and composite keys are incompatible with ActiveStorage HOT 1
- Setter sometimes doesn't update the changes, and therefore, doesn't save later on. HOT 4
- url_for helper incorrectly combines query parameters on routes with a default parameter HOT 3
- find_or_create_by! behavior raises RecordNotFound in Rails 7.1 HOT 4
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from rails.