脱离Rails单独使用ActiveRecord的几点需知
Posted 大熊猫侯佩
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了脱离Rails单独使用ActiveRecord的几点需知相关的知识,希望对你有一定的参考价值。
抛开Rails使用ActiveRecord效果非常好,因为ActiveRecord本身就是一个优秀的DBI!
首先不要再连接中写参数:
#不推荐!!!
ActiveRecord::Base.establish_connection(
:adapter=>‘sqlite3‘,
:database=>‘data.sqlite3‘,
:pool=>5,
:timeout=>5000
)
而是将所有连接信息放在yml文件里:
adapter: mysql
host: 10.10.10.156
encoding: utf8
database: flight_db
username: xxx
password: xxx
然后直接读取yml文件中的配置:
db_conf = YAML::load(File.open(‘database.yml‘))
ActiveRecord::Base.establish_connection(db_conf)
其次,想要用什么表,你就建立一个它的stub!
class FlightDep < ActiveRecord::Base
end
是滴!你没有看错,你完全没必要再把该表的结构写出来,因为ActiveRecord会帮你统统搞定!!!
不过有2点需要注意:
1.你可能需要手动关联表名:
class FlightArr < ActiveRecord::Base
self.table_name = "dynamic_flight_arr"
end
2.你可能需要手动关联主键名,尤其是要关联的表不是由Rails创建的:
class Airline < ActiveRecord::Base
self.table_name = "airlines"
self.primary_key = "code"
end
ActiveRecord的ORM对应的类必须要有一个主键,否则可以create,但是不能update,会出错。
以上是关于脱离Rails单独使用ActiveRecord的几点需知的主要内容,如果未能解决你的问题,请参考以下文章
为啥 Rails 5 使用 ApplicationRecord 而不是 ActiveRecord::Base?
Rails使用ActiveRecord Collection或Array更新,导致ActiveRecord :: RecordInvalid错误
使用 Activerecord、Rails 和 Postgres 查找具有多个重复字段的行