問題の説明:
テーブルAの要素をテーブルBの要素にマップするための中間テーブルXがあります。
このテーブル X には、このマッピングのプロパティに関する多くの列も含まれています。テーブル X のレコードの一意性は、id od A と id od B だけでなく、マッピングを表す一意の識別子でもあります。
テーブル X のプロパティを更新しようとしたときに、ルートに追加しました。
map.A :only=>[:none] do |a|
a.resources B :controller=>X :only[:update]
end
map.resources x :only=>[:update]
したがって、これは基本的に、X コントローラーの更新メソッドにアクセスするための可能な URL を提供します。
質問:
私の質問は、A と B または単に X 識別子を渡すことによって、コントローラーがいつアクセスされたかをどのように知ることができるかということです。パラメータを見ると、Aが存在するかどうかを確認でき、存在しない場合はXである必要がありますが、これはあまり実用的/安全ではありません。より複雑になると、正確なケースを検出するために複数の if が必要になります。
さらに悪いことに、何らかの理由で次のような別のルートがあると想像してください。
map.resources Y :controller=>X :only[:update]
次に、私の params ハッシュには :id だけがあり、条件が機能しない場合...
コメント:
パラメータハッシュのキーの名前を変更できるようにルートのオプションがあればいいのにと思い:key
ますが、Rails 2で読んだことから、そのようなことはなく、可能であればプラグインを避けたいと思います。データベースを検索できるように、if ケースまたは URL を解析して渡されたパラメータを伝えるよりも良い方法はありませんか?
ありがとう!!!