Rails はよく、私が考える前に他の人が私の問題について考えていることを教えてくれますが、今回は何も見つかりませんでした...
私は 3 つのモデルを持っています:Node
と(私は Mongoid を使用していますが、問題は ActiveRecord でも同じだと思いますVolume
)Filesystem
ノードhas_many
ボリュームとファイル システム。ボリュームhas_many
ファイル システム。
ボリュームとファイルシステムを同じ「ノード」形式で定義します (ボリュームが追加/変更/削除されると、JS が各ファイルシステムの「ボリューム」選択ボックスを更新します)。このフォームは正常に機能します。
ノードを保存するときにファイルシステムを永続化しようとすると、問題が発生します。
新しいボリュームにはまだ ID がないため、ボリューム名を選択ボックスの値として使用していますが、外部キーは ID です (名前はノード内で一意ですが、異なるノードには同じ名前のボリュームがあるため、名前を ID として使用しないでください)。
とアクションでは、最初にボリュームを保存してから、含まれているボリューム名をそれぞれの IDに置き換えるソリューションを見つける必要がありますnodes_controller
。これは非常に汚いので、クリーンな方法で実行できるかどうか疑問に思っています。create
update
params[:node][:filesystems_attributes]
他の誰かが同じ問題を抱えていましたか?
Node
唯一の本当に「クリーンな」ソリューションは、ボリュームとファイルシステムをさまざまな手順で保存することですが、他の多くのネストされたモデル (およびフォーム) が含まれているため、私のアプリは「クリック数が少ないほど良い」必要があります。