私はレールにかなり慣れていませんが、最近、実際の動作とは逆に、 activerecords has_one関連付けを理解していることがわかりました。rubyonrailsガイドの例を参照して、 account_idを保持する必要があるのはサプライヤーであると想像しました。
理由がよくわからないか、オブジェクトが他のオブジェクトの外部キーを維持することに単に同意しないため、単純な問題に対する正しい Rails ソリューションが何であるかわかりません。とドラフト。すべてのドキュメントには多くの下書きがあり、そのうちの 1 つが現在の下書きとしてマークされています。テーブルのレイアウトは次のようになると想像しました。
table document
id
current_draft_id
table draft
id
document_id
text
ここで探しているのは、has_one関連付けのようなものですが、ドキュメントがcurrent_draft_idを保持および維持するように逆になっています。動作が異なるため、belongs_toの使用はオプションではありません。たとえば、document.current_draft = new_draftでforeign_keyを正しく更新したいと思います。
レールでこれにアプローチする方法は?
--更新 1
私の問題を明確にするために、現在のドラフトはcreated_atおよびupdated_atフィールドとは何の関係もないので、スコープは関係ないと仮定してください。
下書きテーブルに現在のフィールドを追加することは、テーブル設計の観点からは奇妙な動きです。公開されたドラフトに関する情報をドキュメントオブジェクトに追加することも計画していますが、そのような情報をドラフトテーブルで乗算することは奇妙な手順のようです。
私は Amesee のアイデアが気に入っていますが、現在の 列を下書きテーブルに追加するのと同様に、いくつかの抵抗があります。