2011-03-14 33 views
0

我正在开发一个脚本来将旧的Rails 2应用程序数据库转换为新的Rails 3应用程序。新的应用程序是对数据库模式的重写和简化。您如何在Rails之外使用ActiveRecord3的关联功能?

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

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

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

+1

你可以发布一些代码示例?你关于'include'active_record的一句话听起来像是一个问题。要使AR正确工作,您的模型类需要从'ActiveRecord :: Base'继承,例如:'类Something dunedain289 2011-03-14 22:19:58

回答

2

下面是一个小例子,使用ActiveRecord无轨:

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 

实在是没有比这更! 这里使用的宝石是积极记录3,但完全相同的例子与积极记录2一起使用。

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

相关问题