Comments (2)
One of the differences between the first and second assertions is that the second assertion chains the parents
method to the Category.where(id: category.id)
query. In other words, it calls the parents
method on the result of the Category.where(id: category.id)
query. Since the parent
record is not included in the result of the Category.where(id: category.id)
query, calling the parents
method on this result will not return the parent record.
To prove this, you can call Category.parents.pluck(:id)
, which should pass the test. In this case, all Category
records will be available for the parent
chain method.
assert_equal([parent.id], Category.parents.pluck(:id))
Trivial: Instead of using a class method, you can use a scope for the same purpose.
from rails.
Hi @danielwaterworth , thanks for the report. The two queries are not the same. If you were to expand the self.parents
method on the base scope in the second query, it would look something like this:
Category.where(id: category.id).parents.pluck(:id) #expands to
Category.where(id: category.id).where(id: Category.where(id: category.id).select(:parent_category_id)).pluck(:id))
Your base base scope still will have .where(id: category.id)
on it.
The first one is this:
Category.where(id: Category.where(id: category.id).select(:parent_category_id)).pluck(:id))
hence the difference.
Let me know if you still some issue with this. Thanks!
from rails.
Related Issues (20)
- s
- Release 7.0.8.2 contains broken trix.css HOT 2
- Order of operations for saving nested associations has changed in Rails v7.2 with automatically_invert_plural_associations enabled HOT 7
- rescue_from not working with subscribed method on ActionCable channel HOT 2
- Production rails server does not boot if skipping action cable in Rails 8.0.0.alpha HOT 2
- Generate Migration - Rename Table HOT 6
- Rails 7.1 Transactional tests, threaded code and schema caching can cause deadlocks HOT 1
- /Users/amol/.rvm/gems/ruby-2.5.1/gems/activerecord-5.0.2/lib/active_record/connection_adapters/mysql2_adapter.rb:68: [BUG] Segmentation fault at 0x94000f78d65f0300 ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin23] HOT 1
- Support enum in tableless model HOT 4
- `ActiveStorage::Attachment` - Unhandled case where `named_variants` can be `nil`
- `ActiveSupport::BroadcastLogger` with `ActiveSupport::TaggedLogging` throws `no implicit conversion of String into Integer (TypeError)` HOT 3
- Guides: Explain reset_column_information in Chapter "Migrations and Seed Data"
- One of `ApplicationTests::ConfigurationTest` fails with sqlite3 gem that bundles sqlite v3.46.0 HOT 3
- Add a datetime_local method on Time and DateTime classes - typical rails convenience HOT 1
- Deferred route drawing causes problems with some tests
- Incorrect documentation for authenticate_or_request_with_http_token HOT 1
- Regression in URL generation in Rails 7.1 HOT 13
- ActionCable tests fail when encrypted cookie is set with options
- Turbo depends on ActiveJob::Base but no error when I start a project with `rails new . --skip-active-job` HOT 1
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.