在Rails外单独使用ActiveRecord

构建基于Rails和ActiveRecord的JSON API 本文还有配套的精品资源,点击获取 简介:本项目名为"rales_engine",将专注于利用Ruby on Rails框架和ActiveRecord库创建一个JSON API,以公开SalesEngine的数据模式。通过理解Rails的MVC架构,重点在Model上构建API,并使用ActiveRecord定义数据库表和模型关系。同时,将使用Rails内置路由系统定义API... 阅读详情

单独使用ActiveRecord

     需要在应用根目录demo/下的app.rb文件中写入:
require 'active_record'  
require 'sqlite3'  
  
ActiveRecord::Base.establish_connection(  
    :adapter=>'sqlite3',  
    :database=>'data.sqlite3',  
    :pool=>5,  
    :timeout=>5000  
    )  
  
class CreateUsers < ActiveRecord::Migration  
  def change  
    create_table :users do |t|  
      t.string :name  
      t.integer :age  
    end 
  end  
end  

CreateUsers.new.change
  
class User < ActiveRecord::Base  
end  

User.create name:"Jack",age:12

      首先,使用ActiveRecord::Base.establish_connection建立连接,然后定义数据表迁移,再使迁移生效建立数据表,最后就可以像在rails中一样定义model,然后正常使用ActiveRecord了。
    代码可以正常工作了,但可以做的工作还有很多,因为这段代码实在是不美观。

像样的结构

     大杂烩式的代码文件总是不美的,上面代码中包含了数据库连接,表创建,model定义和实际的应用代码四部分,这么多功能各异的部件还是分开好。首先创建demo/db目录,在这个目录下放置所有数据库连接的定义;创建demo/models目录,在下面放置model定义文件。demo/app.rb文件位置不变。

model定义

    model定义文件demo/user.rb的内容就是将上面的user类定义复制过来即可。
class User < ActiveRecord::Base
end

ActiveRecord配置

    新建demo/db/connection.rb文件,该文件里设置数据库连接:
require 'active_record'
require 'yaml'

dbconfig = YAML::load(File.open('db/database.yml'))
ActiveRecord::Base.establish_connection(dbconfig)

   这里模仿rails使用了yaml来配置连接,该文件也在demo/db目录下,内容为:
adapter: sqlite3
database: data.sqlite3
pool: 5
timeout: 5000

    现在的demo/app.rb清爽多了:
require File.expand_path('../db/connection',__FILE__)
Dir[File.expand_path('../models',__FILE__)+'/*.rb'].each{|f| require f }

User.create name:"Jack",age:12

数据表迁移

     现在还有一个问题,我也想像rails中那样利用rake来迁移数据表定义。参考我前一篇博客 Rake就可以轻松写出数据迁移的rakefile。在demo/根目录下创建rakefile文件:
require 'active_record'
require 'yaml'
require 'logger'

task :default => :migrate

task :migrate => :environment do
  ActiveRecord::Migrator.migrate('db/migrate', ENV["VERSION"] ? ENV["VERSION"].to_i : nil )
end

task :environment do
  ActiveRecord::Base.establish_connection(YAML::load(File.open('db/database.yml')))
  ActiveRecord::Base.logger = Logger.new(File.open('db/database.log', 'a'))
end

只要在终端中执行rake命令就可能完成数据迁移:
$ rake
==  CreateUsers: migrating ====================================================
-- create_table(:users)
   -> 0.0020s
==  CreateUsers: migrated (0.0040s) ===========================================

    实际上现在还无法得出这样的输出,因为还没有编写迁移代码文件。那么迁移文件写在哪儿呢?在demo/db/migrate/目录中专门用来放置数据迁移代码,比如现在我们在该目录下新建一个迁移文件001_create_users.rb,写入迁移代码:
class CreateUsers < ActiveRecord::Migration  
  def change  
    create_table :users do |t|  
      t.string :name  
      t.integer :age  
    end 
  end  
end  

     现在执行rake命令才能得出上面给出的正确输出。
最后给出示例应用的最终目录结构:


三维重建/SLAM笔记_最佳学习路线/攻略 本文目的 学习三维重建,需要不少知识,而知识之间又存在不同的依赖关系,为了后来人能少走弯路,也为了对自己的知识框架系统总结,特记录自己的学习路线。 学习心得 关于读书,了解基础知识是一方面,产生疑问也是一方面,为以后知道学习什么留下印象; 一回生,二回熟,看不懂时,大多是因为先验知识不够,没关系,多查多想,总会搞懂的。 学习路线 1.计算机图形学基础(OpenGL基础版)(徐文鹏 清... 阅读详情

相关推荐

EPLAN二次开发实战指南:从API接口到定制化界面

本文为EPLAN二次开发实战指南,详细介绍了从搭建C#开发环境、理解API接口到创建定制化插件的完整流程。通过实战案例,如批量修改设备属性和设计交互式界面,帮助电气工程师利用EPLAN二次开发实现工作流程自动化与深度定制,从而显著提升设计效率。

weixin_29246195的博客 804

ActiveRecord::Base.establish_connection

WARNING Despite the 1.1.0 version number, this gem is not quite production ready. Various people have experienced problems using the 1.0.0 version. A solution was found to deal with this issue but it...

weixin_34138056的博客 640

STM32解析航模遥控器的PPM信号

使用STM32对航模遥控器的PPM信号进行解析

qq_44343584的博客 9733

Ruby学习--用ActiveRecord操作数据库错误之连接1

控制台信息: c:/ruby/lib/ruby/1.8/readbytes.rb:21:in `read': Invalid argument (Errno::EINVAL)  from c:/ruby/lib/ruby/1.8/readbytes.rb:21:in `readbytes'  from c:/ruby/lib/ruby/gems/1.8/gems/postgres-pr-0.4.0...

dawnzhang 319

SAP-PP MD04详解一

MD04是SAP运行MRP后的结果查询事务码,其他功能强大,标准功能比如:查询/更改物料主数据、转换计划订单到生产订单/采购申请、查询/更改各个MRP元素对应的单据等等。而且还可以附加标准的菜单或者自定义添加事务码上去。老铁将做一个MD04详细说明系列,本篇为第一篇之MRP元素说明。 我们来看看MD04基本界面 可以看到主要的数据显示界面,有日期、MRP元素、MRP元素数据、再计划日期、收货/需求、可用数量、工厂、库存地点等栏位。光标定位到MRP元素列,按F1即可看到各类MRP元素的说...

weixin_52158549的博客 1万+

STM32 ADC+DMA实战:手把手教你驱动XGZP6847A压力传感器(附完整代码)

本文详细介绍了如何使用STM32的ADC和DMA外设驱动XGZP6847A压力传感器,包括硬件连接、ADC配置、DMA高效传输实现以及数据处理与校准方法。通过实战案例和完整代码,帮助开发者快速掌握高精度压力数据采集技术,适用于工业控制和医疗设备等领域。

weixin_42570484的博客 404

独立使用ActiveRecord

ActiveRecord虽然在rails里,但却是可以独立使用的。 也就是说它可以脱离rails环境,在ruby环境里使用,当然要事先安装好。 [code] sudo gem install activerecord [/code] 如果已经装好了rails就不需要了。 比较好的习惯是按照传统rails方法建好数据库配置文件和model。 另外假设目录结构是与ra...

棋牌游戏 244

2018南京大学计算机夏令营机试

1. Count number of binary strings without consecutive 1’s Given a positive integer n(3≤n≤90), count all possible distinct binary strings of length n such that there are no consecutive 1's . Examples...

climber16的博客 1万+

Ruby中,ActiveRecord 初次使用心得(一)

自己要写一个将csv文件数据导入数据库的Ruby程序,用到了ActiveRecord,程序如下: require 'csv' require 'rubygems' require 'active_record' require 'yaml' class_name = ARGV[0].split('/').last.split('.')[0] eval("

一花一世界 5385

5G NR上行控制信道PUCCH

一、PUCCH概述 PUCCH用于承载上行控制信息,相比LTE,NR PUCCH支持5种不同的格式,按照时域上所占用的符号数量可以分为短格式和长格式两种,如下表所示,短格式占用1-2个符号,可以承载1-2bit信息,长格式占用4-14个符号,可承载大于2bit的信息。NR引入短格式PUCCH的目的是可以缩短HARQ-ACK反馈的时延,长格式仍然是考虑到持续时间长可以保证覆盖。 NR中,考虑到系...

一个关于5G NR的博客^^ 3万+

rosbag分析传感器数据的时间同步情况方法

ROS传感器时间同步分析流程:通过rosbaginfo初步检查bag文件信息,使用rqt_bag可视化时间线分布,采用rostopicecho或Python脚本提取各传感器时间戳并计算时间差统计值(均值/最大差/标准差),最后分析接收与采样时间延迟。量化评估同步精度,识别固定偏移或随机抖动问题,确保多传感器数据对齐,为后续融合处理提供可靠数据基础。

start_up_go的博客 201

脱离Rails单独使用ActiveRecord的几点需知

抛开Rails使用ActiveRecord效果非常好,因为ActiveRecord本身就是一个优秀的DBI!首先不要再连接中写参数:#不推荐!!! ActiveRecord::Base.establish_connection( :adapter=>'sqlite3', :database=>'data.sqlite3', :pool=>5,

享受开发,颠倒银河 2738

Python 爬虫实战:全国高校录取分数线数据爬取与院校对比分析

本文介绍了一个基于Python的高考志愿填报辅助系统,通过爬取掌上高考平台的全国高校录取分数线数据,构建本地数据库并实现智能分析。系统主要功能包括:1)使用requests+BeautifulSoup爬取院校基本信息和历年分省分科类录取线;2)通过SQLite实现数据持久化与增量更新;3)利用pyecharts生成分数线趋势图、院校对比雷达图等可视化图表;4)提供"冲稳保"三档智能选校推荐。技术栈涵盖网络爬虫、数据清洗、数据库管理和可视化分析,可为考生提供数据驱动的志愿填报决策支持。项目采用模块化设计,包含

u014481728的博客 238

Amoeba:Ruby on Rails中ActiveRecord对象复制的终极指南

Amoeba是一个强大的Ruby gem,专为Ruby on Rails应用设计,能够轻松实现ActiveRecord对象及其关联子对象的复制功能,并通过模型上的DSL进行灵活配置。无论是简单的记录复制还是复杂的关联对象克隆,Amoeba都能提供简洁而强大的解决方案。 ## 为什么选择Amoeba? 在Ruby on Rails开发中,我们经常需要复制ActiveRecord对象。手动复制不仅

gitblog_00364的博客 421

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Sinatra ActiveRecord 与 Rails 对比:轻量级框架的数据库方案选择

在Ruby开发领域,**Sinatra ActiveRecord**为开发者提供了一种轻量级的数据库解决方案,特别适合那些不需要Rails全套功能但希望使用ActiveRecord ORM的项目。本文将深入对比Sinatra ActiveRecord与Rails的数据库方案,帮助您做出明智的技术选择。对于寻求灵活性和简洁性的开发者来说,Sinatra ActiveRecord是一个完美的轻量级数据

gitblog_01155的博客 792

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

SchemaAutoForeignKeys:让Rails外键约束自动生成的神奇工具

SchemaAutoForeignKeys 是一款强大的 Rails 扩展工具,作为 SchemaPlus 项目的重要组成部分,它能够自动为你的 ActiveRecord 模型生成外键约束,极大地简化了数据库迁移工作。通过智能识别模型间的关联关系,该工具让开发者告别手动编写外键约束的繁琐过程,显著提升开发效率。 ## 🚀 核心功能:自动外键约束的终极解决方案 SchemaAutoForeig

gitblog_00526的博客 445

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

Deep Cloneable:Rails ActiveRecord深度克隆的终极解决方案

🚀 在Rails开发中,你是否曾遇到过需要深度复制一个ActiveRecord对象及其所有关联数据的场景?比如复制一个包含订单、订单项、客户信息的完整订单记录?这就是 `deep_cloneable` 这个神奇的Ruby gem要解决的问题!它为每个ActiveRecord::Base对象提供了深度克隆的能力,可以包含用户指定的关联数据,让你的数据复制工作变得前所未有的简单和高效。 ## 📦

gitblog_00751的博客 1059

AI 逆向分析实操指南:REA 逆向工程技能完整上手

手里一个没源码的客户端,想知道它退出时把数据传给了谁?REA(reverse-engineer-anything)是一套 AI 逆向分析技能,把完整的逆向工程工作流交给你的 AI 编码助手,覆盖原生二进制、APK、Electron 应用。 [![REA 逆向工程:用 Hopper 反汇编分析原生二进制](https://raw.gitcode.com/GitHub_Trending/rea2/r

gitblog_01181的博客 1057

为什么 activerecord-multi-tenant 是 Rails 多租户开发的最佳选择?终极指南

在当今SaaS应用和云服务蓬勃发展的时代,**Rails多租户开发**已成为构建可扩展应用的关键需求。如果你正在寻找一个简单、高效且功能强大的**多租户解决方案**,那么activerecord-multi-tenant绝对是你的最佳选择!这个由Citus Data团队开发的Gem专门为**分布式多租户数据库**设计,特别是PostgreSQL的Citus扩展,提供了无缝的ActiveRecord

gitblog_00403的博客 952

Folia 安装教程:Windows、macOS 与 Linux 三平台从零下载部署到首次启动

Folia 是一个把歌词渲染成全屏动画的沉浸式音乐播放器,支持网易云、酷狗、QQ 音乐、Navidrome 在线音源和本地音乐库。本文带你完成 Folia 安装教程:从下载包到第一次成功启动。主线走 Linux 便携版部署,顺利的话 3~5 分钟跑通。 [![Folia 安装完成后的网易云音乐首页界面](https://raw.gitcode.com/GitHub_Trending/fo/fol

gitblog_00271的博客 420

Ruby on Rails,使用destroy方法删除ActiveRecord对象

欢迎来我的博客http://blog.youkuaiyun.com/abbuggy/article/details/8091639 在之前的《Ruby on Rails,使用new和create创建ActiveRecord对象及他们之间的区别》中学习到,通过new和create命令创建及持久化ActiveRecord对象;《Ruby on Rails,使用save和update_attributes

边晓宇@优快云 8222

activerecord-multi-tenant 终极指南:如何在 Rails 应用中轻松实现多租户架构

在当今的 SaaS(软件即服务)应用开发中,多租户架构已成为构建可扩展、安全且高效的应用程序的关键技术。对于使用 Ruby on Rails 框架的开发者来说,activerecord-multi-tenant 提供了一个简单而强大的解决方案,帮助您轻松实现多租户数据隔离和管理。这个终极指南将带您深入了解如何在 Rails 应用中快速集成和使用 activerecord-multi-tenant,

gitblog_00371的博客 927

rails ActiveRecord

go to rails api: http://api.rubyonrails.org/go to ActiveRecord::Basesee method  find/new/savefind(*args) Find operates with three different retrieval approaches: Find by id: This can either 

990

5分钟上手Rein:ActiveRecord迁移中添加数据库约束的完整教程

Rein是一个为ActiveRecord简化数据库约束管理的实用工具,让开发者能够轻松在Rails迁移中定义和维护各类数据库约束,确保数据完整性和一致性。本文将带你快速掌握Rein的核心功能和使用方法,5分钟内即可在项目中应用常见的数据库约束。 ## 📦 快速安装Rein到Rails项目 要在Rails项目中使用Rein,只需在`Gemfile`中添加以下依赖: ```ruby gem '

gitblog_00239的博客 710

什么是Rails ActiveRecord

Active Record is the M in MVC — the model — which is the layer of the system responsible for representing business data and logic.[Source: https://guides.rubyonrails.org/active_record_basics.html] Act...

weixin_26724741的博客 296

SchemaPlus完全指南:ActiveRecord增强插件家族的终极使用手册

SchemaPlus是一个为ActiveRecord提供增强功能的插件家族,能够帮助开发者简化数据库操作、减少重复代码并提升开发效率。本文将全面介绍SchemaPlus的核心功能、安装配置方法以及实用技巧,让你轻松掌握这个强大工具的使用。 ## 什么是SchemaPlus? SchemaPlus家族包含多个专注于不同功能的gem包,为ActiveRecord(>=4.2)提供丰富的扩展能力。这

gitblog_00177的博客 775
上一篇: rake- Ruby Make
下一篇: Linux系统启动的标准流程
qjpcpu
博客等级 码龄15年 59粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值