我正在尝试创建一个活动记录无表模型。我的user.rb看起来像这样
class User < ActiveRecord::Base
class_inheritable_accessor :columns
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
column :name, :text
column :exception, :text
serialize :exception
end
在控制器中创建新对象时
@user = User.new
我得到了错误
users
::Error:表'Sampledb.users‘不存在:显示Mysql2中的字段
发布于 2012-02-03 13:27:00
class Tableless
include ActiveModel::Validations
include ActiveModel::Conversion
extend ActiveModel::Naming
def self.attr_accessor(*vars)
@attributes ||= []
@attributes.concat( vars )
super
end
def self.attributes
@attributes
end
def initialize(attributes={})
attributes && attributes.each do |name, value|
send("#{name}=", value) if respond_to? name.to_sym
end
end
def persisted?
false
end
def self.inspect
"#<#{ self.to_s} #{ self.attributes.collect{ |e| ":#{ e }" }.join(', ') }>"
end
end
发布于 2012-02-03 13:23:31
几件事:
首先,您使用的是Railscast 193中概述的Rails2方法,而实际上您应该使用Railscast 219中概述的Rails3方法
您可能不希望在执行此类操作时继承ActiveRecord::Base。
请阅读耶胡达·卡茨的blog post。
发布于 2012-02-03 13:27:29
不要从ActiveRecord::Base
继承你的类。
如果模型继承自ActiveRecord::Base,就像您期望的模型类那样,它希望有一个数据库后端。
https://stackoverflow.com/questions/9123858
复制相似问题