• 在没有数据库表或者列的情况下新建model;rails ,ruby, rack


    因为在某些情况下要使用不存在的列,或者是要新建一个虚拟的model

    可以在models下的concerns下新建tableless.rb,代码如下:

    module Tableless
    def self.included(base)
        base.extend(ClassMethods)
        base.send(:include,InstanceMethods)
    end
    
    module InstanceMethods
    def save(validate = true)
        validate ? valid? : true
    end
    end
    
    module ClassMethods
    def 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 columns
    @columns ||= [];
    end
    end
    end
    

      

    在model中的使用如下:

    class Notice < ActiveRecord::Base
    include Tableless
    
    column :code, :integer
    column :message, :string
    
    attr_accessor :code, :message
    end
    

      

  • 相关阅读:
    清单
    1
    s
    模块系统的演进
    改radio样式
    前端css库
    疑惑
    收藏
    事件
    社保档案
  • 原文地址:https://www.cnblogs.com/tomtang/p/5159409.html
Copyright © 2020-2023  润新知