【发布时间】:2011-05-03 16:25:11
【问题描述】:
我正在使用 DataMapper 并尝试使用模型 Project 和 Task 之间的关联。我将模型放在单独的文件 project.rb 和 task.rb 中。当我尝试将它们相互关联时,出现以下错误:
Cannot find the parent_model Project for Task in project (NameError)
我认为这是由需要 task.rb 的 project.rb 引起的,反之亦然,因为如果我只是将它包含在其中一个文件中,该关联就可以正常工作。代码如下:
项目.rb
require 'dmconfig'
require 'task'
class Project
include DataMapper::Resource
property :id, Serial
has n, :tasks
end
DataMapper.auto_upgrade!
DataMapper.finalize
task.rb
require 'dmconfig'
require 'project'
class Task
include DataMapper::Resource
property :id, Serial
belongs_to :project
end
DataMapper.auto_upgrade!
DataMapper.finalize
dmconfig.rb
require 'rubygems'
require 'dm-core'
require 'dm-migrations'
DataMapper::Logger.new($stdout, :debug)
DataMapper.setup(:default, 'sqlite://' + Dir.pwd + '/taskmanager.db')
如果我从其中一个文件中删除关联,它可以正常工作,至少从一个方向:
require 'dmconfig'
class Project
include DataMapper::Resource
property :id, Serial
end
DataMapper.auto_upgrade!
DataMapper.finalize
如果我希望关联从两个方向起作用,是否是将两个类放在同一个文件中的唯一合理解决方案?或者有什么方法可以让他们分开并仍然管理它?
【问题讨论】:
标签: ruby associations datamapper