多型スルーモデルとはかなり複雑な関係にあります。このアプリには、ユーザーと別のモデルにタグを付けるタグシステムがあります。重複する文字列の入力を避けるため、タグID、タグ付きモデル名、タグ付きインスタンスIDを含むスルーモデル(TagLink)を使用しました。ポリモーフィックなhasAndBelongsToManyモデルとの重複を回避する
だから私は、リンク関係がhasAndBelongsToMany
ある
User --+
|
+---> TagLink -----------> Tag
| - tagId - id
Item --+ - taggableId - text
- taggableName
(User or Item)
を持っています。問題は、/items/:id/tags
または/users/:id/tags
に新しいタグを投稿すると保存されますが、同じテキストで何もエラーを発生させずに何度でも作成できます。
私が希望することは、/items/:id/tags
または/users/:id/tags
に投稿するときに、それされています。それはすでに存在していない場合
- は新しいタグエントリを作成し、これは現在の動作です(新しい
TagLink
エントリを追加し、しかし、同じタグが既に存在する場合でも)タグは、すでに
私は約2ソリューションと思っ存在する場合
TagLink
エントリを作成します。を
- 何らかの理由で、作成メソッド
Tag
をオーバーライドして存在を確認し、手動でTagLink
エントリが存在する場合は作成します。そうでない場合は、デフォルトで実行します。 - タグリスト(
/tags
)を〜すべてのCRUD URIで公開し、強制的にタグIDを/{items,users}/:id/tags
に使用します。
理想的には、最初の方が透明でAPIがスムーズになります。
だから、どんなリードも歓迎です!