我们有以下类来处理来自外部API的SOAP响应,这些响应在ruby 1.8.7中运行良好,但它正在寻找一个表,其中包含迁移后的这些列(从未出现过)。 2 / rails 3.1,我该如何处理这种迁移?
class SoapResponse < 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 save(validate = true)
validate ? valid? : true
end
column :soap_payload, :text
serialize :soap_payload
end
答案 0 :(得分:3)
你没有(有任何迁移)。
您没有迁移,也没有从ActiveRecord::Base
继承,因为这是数据库ORM组件。
如果使用生成器创建模型,请使用--skip-migration
以避免生成数据库迁移文件。
您仍然可以获得验证和转换,例如
class SoapResponse
include ActiveModel::Validations
include ActiveModel::Conversion
如果你想要一些设置数据(即常量,假设没有数据库!)你可以在这里定义它们(常量以大写字母开头)。
答案 1 :(得分:1)
我想你想要ActiveRecord :: Base的序列化功能。这似乎是这个班级唯一使用它的东西。如果是这样,请尝试在类定义中调用它:
self.abstract_class = true
或者您可以尝试使用ActiveModel::Serialization。
代码中的模式与this answer for table-less AR models in Rails 2中建议的模式类似。