以前我们的模型有 has_one 和 belongs_to 关系:
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
一切正常,但我们希望向后兼容。IE。我们还想要在嵌入之前创建的那些输出。
然后,我们在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
任何有这种情况或这种情况的任何指示的人。