Эта вещь без таблиц кажется все более и более хакерской, но микс просто не то же самое (не помню точно, что не сработало сейчас, я имел дело с этим несколько месяцев назад, вернулся кэто потому что обновление до 3.1 сломало его).Версия 3.1.0rc4 работала с переопределением метода columns_hash, 3.1.0 также требует переопределения column_defaults.Итак, вот версия, которая проходит мои тесты проекта.
class Tableless < ActiveRecord::Base
def self.columns
@columns ||= [];
end
def self.column(name, sql_type = nil, default = nil, null = true)
columns << ActiveRecord::ConnectionAdapters::Column.new(name.to_s, default,
sql_type.to_s, null)
end
def self.columns_hash
@columns_hash ||= Hash[columns.map { |column| [column.name, column] }]
end
def self.column_names
@column_names ||= columns.map { |column| column.name }
end
def self.column_defaults
@column_defaults ||= columns.map { |column| [column.name, nil] }.inject({}) { |m, e| m[e[0]] = e[1]; m }
end
# Override the save method to prevent exceptions.
def save(validate = true)
validate ? valid? : true
end
end
Надеюсь, это работает для вас,
- Хосе