Ранее мы имели HAS_ONE и belongs_to отношения с нашими моделями:Необычный случай Rails Mongoid
class Task
include Mongoid::Document
include Mongoid::Timestamps
has_one :output
end
class Output
include Mongoid::Document
include Mongoid::Timestamps
belongs_to :task
end
Но теперь мы планируем внедрить выход внутри задачи.
class Task
include Mongoid::Document
include Mongoid::Timestamps
embeds_one :output
end
class Output
include Mongoid::Document
include Mongoid::Timestamps
embedded_in :task
end
Все работает нормально, но мы хотим сделать обратную совместимость. то есть. мы хотим, чтобы эти результаты также были созданы до внедрения.
Затем мы сделали этот метод в task.rb:
def output
Task.collection.find(_id: Moped::BSON::ObjectId(self.id)).first.output || Output.collection.find(task_id: Moped::BSON::ObjectId(self.id)).first
end
Проблема с этим теперь task.output даст JSON вместо вывода объекта. поэтому мы не можем сделать
task = Task.new
output = task.create_output
output.task #=> not possible
Любой имеющий такой сценарий или какие-либо направления для этого случая.
Ну я думал об этом, но у меня есть более миллиона записей Task и выход, так что я сомневался в этом. .. – roxxypoxxy