Для Rails 3.X , есть метод column_exists?(:table_name, :column_name)
.
Для Rails 2.X , вы можете проверить существование столбцов с помощью следующего:
columns("<table name>").index {|col| col.name == "<column name>"}
... или, если вы не в файле миграции:
ActiveRecord::Base.connection.columns("<table name>").index {|col| col.name == "<column name>"}
Если он возвращает nil, такой столбец не существует.Если он возвращает Fixnum, то столбец существует.Естественно, вы можете поместить более селективные параметры между {...}
, если хотите идентифицировать столбец не только по его имени, например:
{ |col| col.name == "foo" and col.sql_type == "tinyint(1)" and col.primary == nil }