1

以前は、モデルと 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

このシナリオまたはこのケースの指示がある人。

4

1 に答える 1