ruby-on-rails – Ruby on Rails:全功能无表格模型
发布时间:2020-12-17 03:58:44 所属栏目:百科 来源:网络整理
导读:在搜索无表格模型示例后,我遇到了这个代码,这似乎是关于如何创建一个代码的一般共识. class Item ActiveRecord::Baseclass_inheritable_accessor :columns self.columns = [] def self.column(name,sql_type = nil,default = nil,null = true) columns Activ
在搜索无表格模型示例后,我遇到了这个代码,这似乎是关于如何创建一个代码的一般共识.
class Item < ActiveRecord::Base class_inheritable_accessor :columns self.columns = [] 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 all return [] end column :recommendable_type,:string #Other columns,validations and relations etc... end 但是我还希望它能够像模型那样起作用,表示一个对象的集合,这样我就可以做Item.all. 计划是使用文件填充项目,并从文件中提取每个项目的属性. 但是目前如果我做Item.all我会得到一个 Mysql2 ::错误表’test_dev.items’不存在… 错误. 解决方法
我在
http://railscasts.com/episodes/219-active-model找到了一个例子,我可以使用模型特征,然后覆盖所有的静态方法(之前应该考虑过这个).
class Item include ActiveModel::Validations include ActiveModel::Conversion extend ActiveModel::Naming attr_accessor :name,:email,:content validates_presence_of :name validates_format_of :email,:with => /^[-a-z0-9_+.]+@([-a-z0-9]+.)+[a-z0-9]{2,4}$/i validates_length_of :content,:maximum => 500 class << self def all return [] end end def initialize(attributes = {}) attributes.each do |name,value| send("#{name}=",value) end end def persisted? false end end (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |