Show the records in Relation#inspect
The reason for removing the previous implementation of `#inspect` was that it hid from you that you were dealing with a `Relation` rather than an `Array`. But it is still useful to be able to see the records, particularly if you're writing something like the following in tests: assert_equal [foo], Post.where(:bar) If the assertion fails, you want to see what records were actually loaded. So this implementation makes it clear that you've got a `Relation`, but also shows your records.
This commit is contained in:
parent
8ce61a3664
commit
07314e64fd
|
@ -20,14 +20,16 @@
|
|||
|
||||
*Aleksey Magusev*
|
||||
|
||||
* `ActiveRelation#inspect` no longer calls `#to_a`. This means that in places
|
||||
where `#inspect` is implied (such as in the console), creating a relation
|
||||
will not execute it anymore, you'll have to call `#to_a` when necessary:
|
||||
* `ActiveRecord::Relation#inspect` now makes it clear that you are
|
||||
dealing with a `Relation` object rather than an array:.
|
||||
|
||||
User.where(:age => 30) # => returns the relation
|
||||
User.where(:age => 30).to_a # => executes the query and returns the loaded objects, as before
|
||||
User.where(:age => 30).inspect
|
||||
# => <ActiveRecord::Relation [#<User ...>, #<User ...>]>
|
||||
|
||||
*Brian Cardarella*
|
||||
User.where(:age => 30).to_a.inspect
|
||||
# => [#<User ...>, #<User ...>]
|
||||
|
||||
*Brian Cardarella & Jon Leighton*
|
||||
|
||||
* Add `collation` and `ctype` support to PostgreSQL. These are available for PostgreSQL 8.4 or later.
|
||||
Example:
|
||||
|
|
|
@ -514,6 +514,10 @@ module ActiveRecord
|
|||
@values.dup
|
||||
end
|
||||
|
||||
def inspect
|
||||
"#<#{self.class.name} #{to_a.inspect}>"
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def references_eager_loaded_tables?
|
||||
|
|
|
@ -1311,4 +1311,9 @@ class RelationTest < ActiveRecord::TestCase
|
|||
relation.merge! where: 'foo'
|
||||
end
|
||||
end
|
||||
|
||||
test "relations show the records in #inspect" do
|
||||
relation = Post.limit(2)
|
||||
assert_equal "#<ActiveRecord::Relation [#{Post.limit(2).map(&:inspect).join(', ')}]>", relation.inspect
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in New Issue