Prefer array?
rather than array
Slightly refactoring `PostgreSQLColumn`. `array` should be readonly. `default_function` should be initialized by `super`. `sql_type` has been removed `[]`. Since we already choose to remove it we should not change.
This commit is contained in:
parent
4591b0fc04
commit
3225ebfa06
@ -30,13 +30,13 @@ module Format
|
||||
# <tt>company_name varchar(60)</tt>.
|
||||
# It will be mapped to one of the standard Rails SQL types in the <tt>type</tt> attribute.
|
||||
# +null+ determines if this column allows +NULL+ values.
|
||||
def initialize(name, default, cast_type, sql_type = nil, null = true)
|
||||
def initialize(name, default, cast_type, sql_type = nil, null = true, default_function = nil)
|
||||
@name = name
|
||||
@cast_type = cast_type
|
||||
@sql_type = sql_type
|
||||
@null = null
|
||||
@default = default
|
||||
@default_function = nil
|
||||
@default_function = default_function
|
||||
end
|
||||
|
||||
def has_default?
|
||||
|
@ -2,18 +2,17 @@ module ActiveRecord
|
||||
module ConnectionAdapters
|
||||
# PostgreSQL-specific extensions to column definitions in a table.
|
||||
class PostgreSQLColumn < Column #:nodoc:
|
||||
attr_accessor :array
|
||||
attr_reader :array
|
||||
alias :array? :array
|
||||
|
||||
def initialize(name, default, cast_type, sql_type = nil, null = true, default_function = nil)
|
||||
if sql_type =~ /\[\]$/
|
||||
@array = true
|
||||
super(name, default, cast_type, sql_type[0..sql_type.length - 3], null)
|
||||
sql_type = sql_type[0..sql_type.length - 3]
|
||||
else
|
||||
@array = false
|
||||
super(name, default, cast_type, sql_type, null)
|
||||
end
|
||||
|
||||
@default_function = default_function
|
||||
super
|
||||
end
|
||||
|
||||
def serial?
|
||||
|
@ -144,7 +144,7 @@ def column_spec_for_primary_key(column)
|
||||
# AbstractAdapter
|
||||
def prepare_column_options(column) # :nodoc:
|
||||
spec = super
|
||||
spec[:array] = 'true' if column.respond_to?(:array) && column.array
|
||||
spec[:array] = 'true' if column.array?
|
||||
spec[:default] = "\"#{column.default_function}\"" if column.default_function
|
||||
spec
|
||||
end
|
||||
|
@ -35,13 +35,13 @@ def setup
|
||||
def test_column
|
||||
assert_equal :string, @column.type
|
||||
assert_equal "character varying", @column.sql_type
|
||||
assert @column.array
|
||||
assert @column.array?
|
||||
assert_not @column.number?
|
||||
assert_not @column.binary?
|
||||
|
||||
ratings_column = PgArray.columns_hash['ratings']
|
||||
assert_equal :integer, ratings_column.type
|
||||
assert ratings_column.array
|
||||
assert ratings_column.array?
|
||||
assert_not ratings_column.number?
|
||||
end
|
||||
|
||||
@ -74,7 +74,7 @@ def test_change_column_with_array
|
||||
|
||||
assert_equal :text, column.type
|
||||
assert_equal [], PgArray.column_defaults['snippets']
|
||||
assert column.array
|
||||
assert column.array?
|
||||
end
|
||||
|
||||
def test_change_column_cant_make_non_array_column_to_array
|
||||
|
@ -28,7 +28,7 @@ def test_bit_string_column
|
||||
assert_equal "bit(8)", column.sql_type
|
||||
assert_not column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_bit_string_varying_column
|
||||
@ -37,7 +37,7 @@ def test_bit_string_varying_column
|
||||
assert_equal "bit varying(4)", column.sql_type
|
||||
assert_not column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_default
|
||||
|
@ -34,7 +34,7 @@ def test_column
|
||||
assert_equal 'citext', column.sql_type
|
||||
assert_not column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_change_table_supports_json
|
||||
|
@ -52,7 +52,7 @@ def test_column
|
||||
assert_equal "full_address", column.sql_type
|
||||
assert_not column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_composite_mapping
|
||||
@ -113,7 +113,7 @@ def test_column
|
||||
assert_equal "full_address", column.sql_type
|
||||
assert_not column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_composite_mapping
|
||||
|
@ -31,7 +31,7 @@ def test_column
|
||||
assert_equal "custom_money", column.sql_type
|
||||
assert column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_domain_acts_like_basetype
|
||||
|
@ -33,7 +33,7 @@ def test_column
|
||||
assert_equal "mood", column.sql_type
|
||||
assert_not column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_enum_defaults
|
||||
|
@ -23,7 +23,7 @@ def test_tsvector_column
|
||||
assert_equal "tsvector", column.sql_type
|
||||
assert_not column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_update_tsvector
|
||||
|
@ -28,7 +28,7 @@ def test_column
|
||||
assert_equal "point", column.sql_type
|
||||
assert_not column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_default
|
||||
|
@ -56,7 +56,7 @@ def test_column
|
||||
assert_equal "hstore", @column.sql_type
|
||||
assert_not @column.number?
|
||||
assert_not @column.binary?
|
||||
assert_not @column.array
|
||||
assert_not @column.array?
|
||||
end
|
||||
|
||||
def test_default
|
||||
|
@ -36,7 +36,7 @@ def test_column
|
||||
assert_equal column_type.to_s, column.sql_type
|
||||
assert_not column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_default
|
||||
|
@ -32,7 +32,7 @@ def test_column
|
||||
assert_equal "ltree", column.sql_type
|
||||
assert_not column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_write
|
||||
|
@ -27,7 +27,7 @@ def test_column
|
||||
assert_equal 2, column.scale
|
||||
assert column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_default
|
||||
|
@ -25,7 +25,7 @@ def test_cidr_column
|
||||
assert_equal "cidr", column.sql_type
|
||||
assert_not column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_inet_column
|
||||
@ -34,7 +34,7 @@ def test_inet_column
|
||||
assert_equal "inet", column.sql_type
|
||||
assert_not column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_macaddr_column
|
||||
@ -43,7 +43,7 @@ def test_macaddr_column
|
||||
assert_equal "macaddr", column.sql_type
|
||||
assert_not column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_network_types
|
||||
|
@ -51,7 +51,7 @@ def test_data_type_of_uuid_types
|
||||
assert_equal "uuid", column.sql_type
|
||||
assert_not column.number?
|
||||
assert_not column.binary?
|
||||
assert_not column.array
|
||||
assert_not column.array?
|
||||
end
|
||||
|
||||
def test_treat_blank_uuid_as_nil
|
||||
|
@ -82,7 +82,7 @@ def test_add_column_with_array
|
||||
columns = connection.columns(:testings)
|
||||
array_column = columns.detect { |c| c.name == "foo" }
|
||||
|
||||
assert array_column.array
|
||||
assert array_column.array?
|
||||
end
|
||||
|
||||
def test_create_table_with_array_column
|
||||
@ -93,7 +93,7 @@ def test_create_table_with_array_column
|
||||
columns = connection.columns(:testings)
|
||||
array_column = columns.detect { |c| c.name == "foo" }
|
||||
|
||||
assert array_column.array
|
||||
assert array_column.array?
|
||||
end
|
||||
end
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user