
Bug ao adicionar colunas em banco de dados PostgreSQL
Havia um bug ao se usar o banco de dados PostgreSQL. O bug ocorria quando se criava uma migration para adicionar uma coluna em uma tabela já existente, veja um exemplo:
Arquivo: db/migrate/002_add_cost.rb
class AddCost < ActiveRecord::Migration
def self.up
add_column :items, :cost, :decimal, :precision => 6, :scale => 2
end
def self.down
remove_column :items, :cost
end
end
Note que estou criando uma coluna com :precision => 6 e :scale => 2. Agora é hora de rodar o “rake db:migrate” e vamos ver como ficou nossa tabela no banco:
Column | Type | Modifiers
--------------+------------------------+-------------
id | integer | not null
descr | character varying(255) |
price | numeric(5,2) |
cost | numeric |
Ops…Veja a coluna “cost” que acabamos de criar… ela é um numeric comum, mas deveria ser uma coluna como a “price“, logo acima dela, mais precisamente um numeric(6,2).
Bom, este erro já foi corrigido!
Novos métodos #utc, #utc? e #utc_offset para a classe DateTime
Outra alteração interessante para a nova versão. Para manter a compatibilidade (duck-typing) com a classe Time, três métodos novos foram adicionados à classe DateTime. Os métodos são #utc, #utc? e #utc_offset. Vamos ver um exemplo de uso de cada um:
>> date = DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24))
=> Mon, 21 Feb 2005 10:11:12 -0600
>> date.utc
=> Mon, 21 Feb 2005 16:11:12 +0000
>> DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24)).utc?
=> false
>> DateTime.civil(2005, 2, 21, 10, 11, 12, 0).utc?
=> true
>> DateTime.civil(2005, 2, 21, 10, 11, 12, Rational(-6, 24)).utc_offset
=> -21600