我正在尝试创建 Active Record 无表模型。我的 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
在 Controller 中创建新对象时
@user = User.new
我收到错误
Mysql2::错误:表“Sampledb.users”不存在:显示来自用户
的字段
最佳答案
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
关于ruby-on-rails-3 - 如何在 Rails 3 中创建 ActiveRecord 无表模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9123858/