你如何在Rails之外使用ActiveRecord3的关联功能?

时间:2011-03-14 21:44:15

标签: ruby activerecord

我正在编写一个脚本,将旧的Rails 2应用程序数据库转换为新的Rails 3应用程序。新应用程序是对数据库模式的重写和简化。

我创建了一个独立于Rails的独立ruby程序来完成繁重工作,并利用Ruby模块的适配器模式来操作两个数据库连接并将数据从一个系统移动到另一个系统。

我已在我的翻译模型中成功实现了ActiveRecord(使用include“active_record”),并且我的所有查找和验证都按预期工作。但是,关联导致method_missing调用。

我是否需要做一些特殊的事情以允许关联在Rails环境之外工作?我希望得到一个简单的答案,比如“你忘了要求这个密钥文件”。

1 个答案:

答案 0 :(得分:2)

以下是使用activerecord而不使用rails的最小示例:

require 'active_record'

class Site < ActiveRecord::Base
  has_many :users
end


class User < ActiveRecord::Base
  belongs_to :site
end



ActiveRecord::Base.establish_connection(
  :adapter => 'mysql',
  :database => 'test',
  :user => 'root'
)

s = Site.first

p s
p s.users
p s.users[0].site

真的没有比这更好的了! 这里使用的gem是activerecord 3,但完全相同的例子适用于activerecord 2。

PS:显然你需要一个带有站点和用户表的测试数据库来运行这个测试。