Ach*_*ius 17 activerecord model ruby-on-rails-3 ruby-1.9.2
我正在尝试创建一个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
Run Code Online (Sandbox Code Playgroud)
在控制器中创建新对象时
@user = User.new
我收到了错误
Mysql2 ::错误:表'Sampledb.users'不存在:SHOW FIELDS FROM users
duc*_*ped 32
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
Run Code Online (Sandbox Code Playgroud)
一些事情:
首先,你正在使用中介绍的方法Rails2 Railscast 193,当你真正应该使用Rails 3的做法,概括Railscast 219
在执行此类操作时,您可能不希望从ActiveRecord :: Base继承.
阅读Yehuda Katz的博客文章.
| 归档时间: |
|
| 查看次数: |
16416 次 |
| 最近记录: |