fix boolean casts
This commit is contained in:
parent
1dc3410a24
commit
46021b9351
|
@ -68,8 +68,12 @@ module ActiveRecord
|
||||||
end
|
end
|
||||||
|
|
||||||
def type_cast_code(var_name)
|
def type_cast_code(var_name)
|
||||||
|
case type
|
||||||
|
when :boolean then "#{self.class.name}.value_to_boolean(#{var_name})"
|
||||||
|
else
|
||||||
nil
|
nil
|
||||||
end
|
end
|
||||||
|
end
|
||||||
|
|
||||||
private
|
private
|
||||||
def simplified_type(field_type)
|
def simplified_type(field_type)
|
||||||
|
|
|
@ -33,6 +33,7 @@ describe ActiveRecord::ConnectionAdapters::Mysql2Adapter do
|
||||||
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
|
`id` mediumint(9) NOT NULL AUTO_INCREMENT,
|
||||||
`null_test` varchar(10) DEFAULT NULL,
|
`null_test` varchar(10) DEFAULT NULL,
|
||||||
`bit_test` bit(64) NOT NULL DEFAULT b'1',
|
`bit_test` bit(64) NOT NULL DEFAULT b'1',
|
||||||
|
`boolean_test` tinyint(1) DEFAULT 0,
|
||||||
`tiny_int_test` tinyint(4) NOT NULL DEFAULT '1',
|
`tiny_int_test` tinyint(4) NOT NULL DEFAULT '1',
|
||||||
`small_int_test` smallint(6) NOT NULL DEFAULT '1',
|
`small_int_test` smallint(6) NOT NULL DEFAULT '1',
|
||||||
`medium_int_test` mediumint(9) NOT NULL DEFAULT '1',
|
`medium_int_test` mediumint(9) NOT NULL DEFAULT '1',
|
||||||
|
@ -75,6 +76,7 @@ describe ActiveRecord::ConnectionAdapters::Mysql2Adapter do
|
||||||
test = Mysql2Test2.new
|
test = Mysql2Test2.new
|
||||||
test.null_test.should be_nil
|
test.null_test.should be_nil
|
||||||
test.bit_test.should eql("b'1'")
|
test.bit_test.should eql("b'1'")
|
||||||
|
test.boolean_test.should eql(false)
|
||||||
test.tiny_int_test.should eql(1)
|
test.tiny_int_test.should eql(1)
|
||||||
test.small_int_test.should eql(1)
|
test.small_int_test.should eql(1)
|
||||||
test.medium_int_test.should eql(1)
|
test.medium_int_test.should eql(1)
|
||||||
|
@ -103,6 +105,42 @@ describe ActiveRecord::ConnectionAdapters::Mysql2Adapter do
|
||||||
test.long_blob_test.should be_nil
|
test.long_blob_test.should be_nil
|
||||||
test.enum_test.should eql('val1')
|
test.enum_test.should eql('val1')
|
||||||
test.set_test.should eql('val1,val2')
|
test.set_test.should eql('val1,val2')
|
||||||
|
test.save
|
||||||
|
end
|
||||||
|
|
||||||
|
it "should have correct values when pulled from a db record" do
|
||||||
|
test = Mysql2Test2.last
|
||||||
|
test.null_test.should be_nil
|
||||||
|
test.bit_test.class.should eql(String)
|
||||||
|
test.boolean_test.should eql(false)
|
||||||
|
test.tiny_int_test.should eql(1)
|
||||||
|
test.small_int_test.should eql(1)
|
||||||
|
test.medium_int_test.should eql(1)
|
||||||
|
test.int_test.should eql(1)
|
||||||
|
test.big_int_test.should eql(1)
|
||||||
|
test.float_test.should eql('1.0000'.to_f)
|
||||||
|
test.double_test.should eql('1.0000'.to_f)
|
||||||
|
test.decimal_test.should eql(BigDecimal.new('1.0000'))
|
||||||
|
test.date_test.should eql(Date.parse('2010-01-01'))
|
||||||
|
test.date_time_test.should eql(Time.parse('2010-01-01 00:00:00'))
|
||||||
|
test.timestamp_test.class.should eql(Time)
|
||||||
|
test.time_test.class.should eql(Time)
|
||||||
|
test.year_test.should eql(2010)
|
||||||
|
test.char_test.should eql('abcdefghij')
|
||||||
|
test.varchar_test.should eql('abcdefghij')
|
||||||
|
test.binary_test.should eql('abcdefghij')
|
||||||
|
test.varbinary_test.should eql('abcdefghij')
|
||||||
|
test.tiny_blob_test.should eql("")
|
||||||
|
test.tiny_text_test.should be_nil
|
||||||
|
test.blob_test.should be_nil
|
||||||
|
test.text_test.should be_nil
|
||||||
|
test.medium_blob_test.should be_nil
|
||||||
|
test.medium_text_test.should be_nil
|
||||||
|
test.long_blob_test.should be_nil
|
||||||
|
test.long_text_test.should be_nil
|
||||||
|
test.long_blob_test.should be_nil
|
||||||
|
test.enum_test.should eql('val1')
|
||||||
|
test.set_test.should eql('val1,val2')
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
Loading…
Reference in New Issue