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

发布于 2024-10-22 20:38:24 字数 340 浏览 4 评论 0原文

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

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

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

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

I am working on a script to translate an old Rails 2 application database into a new Rails 3 application. The new application is a rewrite and simplification of the database schema.

I have created a stand-alone ruby program independent of Rails to do the heavy lifting and am leveraging the adapter pattern with Ruby modules to manipulate two database connections and move the data from one system to the other.

I have successfully implemented ActiveRecord (using include "active_record") in my translator models and all my find and validations are working as expected. However, the associations are resulting in method_missing calls.

Do I need to do something special to allow the associations to work outside of the Rails environment? I'm hoping for a simple answer like "you forgot to require this key file".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

初懵 2024-10-29 20:38:24

这是一个在没有rails的情况下使用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

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

PS:显然您需要一个包含站点和用户表的测试数据库来运行此测试。

Here is a minimal example using activerecord without 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

There is really no more than this !
The gem used here is activerecord 3 but the exact same example works with activerecord 2.

PS: obviously you need a test database with a sites and users tables to run this test.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文