これは簡単なはずです。ただし、質問にタイトルを付ける方法が正確にはわかりません。CMS (ページ、リンク、フォームなど) に追加できるモジュールのコレクションがあります。それらはすべて、ポリモーフィック アソシエーションを介して、祖先やそれらが有効かどうかなどの一般的なものを管理する 1 つのテーブルに関連付けられています。たとえば、「ページ」を作成しているので、この他のテーブル レコードの作成を自動的に処理します。それに渡す必要があるのは、parent_id だけです。これを行うために、ページ モデルを介してプロキシを作成しました。
def parent_id=(parent_id)
@parent_id = parent_id.blank? ? nil : parent_id.to_i
component_instance.parent_id = @parent_id
end
def parent_id
@parent_id ||= component_instance.parent_id
end
component_instance は多態的な関連です。
ページにparent_idが設定されている場合、空白かどうかを確認するために魔法のチェックを行っていることがわかります。空白の場合は@parent_id値をnilに設定し、そうでない場合は整数に変換してから割り当てますpage/component_instance コンボ全体がデータベースに保存されるときに、必要に応じてそれを適用する component_instance 。
blank? nil : parent_id.to_i
フォーム セレクター ヘルパーは整数を想定しており、id の文字列値では機能しないため、私はこの作業を行う必要がありました。
問題は、これを正しい方法で行っているか、または存在するかどうかに応じて文字列 ID を nil または整数に変換するより良い方法があるかどうかです。