以前は、モデルと 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
すべて正常に動作しますが、下位互換性を持たせたいと考えています。すなわち。埋め込み前に作成された出力も必要です。
次に、このメソッドを 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
このシナリオまたはこのケースの指示がある人。