提交 3225ebfa 编写于 作者: R Ryuta Kamizono

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.
上级 4591b0fc
......@@ -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
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册