mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
Incorporate feedback
This commit is contained in:
parent
2cf41d7a5e
commit
64fd666e16
6 changed files with 16 additions and 4 deletions
|
@ -6,7 +6,7 @@
|
||||||
```ruby
|
```ruby
|
||||||
create_table :users do |t|
|
create_table :users do |t|
|
||||||
t.string :name
|
t.string :name
|
||||||
t.virtual :name_upcased, type: :string, as: 'upper(name)'
|
t.virtual :name_upcased, type: :string, as: 'upper(name)', stored: true
|
||||||
end
|
end
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|
|
@ -456,7 +456,7 @@ module ActiveRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def build_fixture_sql(fixtures, table_name)
|
def build_fixture_sql(fixtures, table_name)
|
||||||
columns = schema_cache.columns_hash(table_name)
|
columns = schema_cache.columns_hash(table_name).reject { |_, column| supports_virtual_columns? && column.virtual? }
|
||||||
|
|
||||||
values_list = fixtures.map do |fixture|
|
values_list = fixtures.map do |fixture|
|
||||||
fixture = fixture.stringify_keys
|
fixture = fixture.stringify_keys
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
# frozen_string_literal: true
|
# frozen_string_literal: true
|
||||||
|
|
||||||
|
require "active_support/core_ext/object/blank"
|
||||||
|
|
||||||
module ActiveRecord
|
module ActiveRecord
|
||||||
module ConnectionAdapters
|
module ConnectionAdapters
|
||||||
module PostgreSQL
|
module PostgreSQL
|
||||||
|
@ -17,7 +19,8 @@ module ActiveRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def virtual?
|
def virtual?
|
||||||
@generated == "s"
|
# We assume every generated column is virtual, no matter the concrete type
|
||||||
|
@generated.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
def has_default?
|
def has_default?
|
||||||
|
|
|
@ -69,5 +69,9 @@ if ActiveRecord::Base.connection.supports_virtual_columns?
|
||||||
assert_match(/t\.virtual\s+"name_length",\s+type: :integer,\s+as: "length\(\(name\)::text\)", stored: true$/i, output)
|
assert_match(/t\.virtual\s+"name_length",\s+type: :integer,\s+as: "length\(\(name\)::text\)", stored: true$/i, output)
|
||||||
assert_match(/t\.virtual\s+"name_octet_length",\s+type: :integer,\s+as: "octet_length\(\(name\)::text\)", stored: true$/i, output)
|
assert_match(/t\.virtual\s+"name_octet_length",\s+type: :integer,\s+as: "octet_length\(\(name\)::text\)", stored: true$/i, output)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def test_build_fixture_sql
|
||||||
|
ActiveRecord::FixtureSet.create_fixtures(FIXTURES_ROOT, :virtual_columns)
|
||||||
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
5
activerecord/test/fixtures/virtual_columns.yml
vendored
Normal file
5
activerecord/test/fixtures/virtual_columns.yml
vendored
Normal file
|
@ -0,0 +1,5 @@
|
||||||
|
one:
|
||||||
|
name: hello
|
||||||
|
|
||||||
|
two:
|
||||||
|
name: world
|
|
@ -512,7 +512,7 @@ NOTE: Generated columns are supported since version 12.0 of PostgreSQL.
|
||||||
# db/migrate/20131220144913_create_users.rb
|
# db/migrate/20131220144913_create_users.rb
|
||||||
create_table :users do |t|
|
create_table :users do |t|
|
||||||
t.string :name
|
t.string :name
|
||||||
t.virtual :name_upcased, type: :string, as: 'upper(name)'
|
t.virtual :name_upcased, type: :string, as: 'upper(name)', stored: true
|
||||||
end
|
end
|
||||||
|
|
||||||
# app/models/user.rb
|
# app/models/user.rb
|
||||||
|
|
Loading…
Reference in a new issue