加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读