By default, if a limit is not set on string fields in a migration, the
limit is set to 255. In postgresql, varchar fields can vary without
having a limit. Is it possible to write migrations that will keep the
varchar varying without a default limit set?
:default => nil didn’t work. I had already tried :limit => nil and that
didn’t work either. I also tried :limit => nil, :default => nil. Still
no luck, the varchar length is still being set at 255. I may just have
to write all of my varchar fields as sql within the migration files
instead of using ruby code, but I am hoping to avoid that.
I might try to find the migration code and see if it is possible to add
a :limit => :ignore param or something like that and submit it as a bug
fix, but I don’t know if this wold be considered a bug or not and I
haven’t gotten my feet wet in rails src code yet.
I might try to find the migration code and see if it is possible to add
a :limit => :ignore param or something like that and submit it as a bug
fix, but I don’t know if this wold be considered a bug or not and I
haven’t gotten my feet wet in rails src code yet.
I put this in an initializer:
module ActiveRecord::ConnectionAdapters
class PostgreSQLAdapter < AbstractAdapter
# Monkey patched to remove varchar limit of 255 that Rails set,
since
# it makes no performance difference in Postgres.
def native_database_types #:nodoc:
{
:primary_key => "serial primary key",
:string => { :name => "character varying" },
:text => { :name => "text" },
:integer => { :name => "integer" },
:float => { :name => "float" },
:decimal => { :name => "decimal" },
:datetime => { :name => "timestamp" },
:timestamp => { :name => "timestamp" },
:time => { :name => "time" },
:date => { :name => "date" },
:binary => { :name => "bytea" },
:boolean => { :name => "boolean" }
}
end
end
end
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.