Я работаю с DataMapper и пытаюсь использовать ассоциации между моделями Project и Task.У меня есть модели в отдельных файлах project.rb и task.rb.Когда я пытаюсь связать их друг с другом, я получаю следующую ошибку:
Cannot find the parent_model Project for Task in project (NameError)
Я понимаю, что это вызвано project.rb, требующим task.rb и наоборот, так как связь работаетхорошо, если я просто включу его в один из файлов.Вот код:
project.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
Если я хочу, чтобы связь работалаявляется ли единственное разумное решение просто поместить оба класса в один файл?Или есть способ, которым я могу держать их отдельно и при этом управлять ими?