2 つのテーブル (投稿とカテゴリ) 間の has_many :through 関連付けセットアップがあります。HABTM の代わりに has_many :through を使用している理由は、結合テーブル (PostCategory) で何らかの検証を行いたいからです。
したがって、ここでは 4 つのモデルを使用しています。
ユーザー:
has_many :posts
has_many :categories
役職:
belongs_to :user
has_many :post_categories
has_many :categories, :through => :post_categories
カテゴリー:
belongs_to :user
has_many :post_categories
has_many :posts, :through => :post_categories
投稿カテゴリー:
belongs_to :post
belongs_to :category
基本的に私が欲しいのは、ユーザーが投稿を作成でき、ユーザーが独自のカテゴリを作成できることです。その後、ユーザーは投稿を分類できます (自分の投稿だけでなく、すべての投稿)。投稿は、さまざまなユーザーによって (さまざまな方法で潜在的に) 分類される可能性があり、1 つのカテゴリにはさまざまな投稿が含まれる可能性があります (ユーザーは、自分の特定のカテゴリの下に N 個の投稿を分類できます)。
ここで、私にとって少しトリッキーになります (私は Rails 初心者です)。 投稿は、特定のユーザーの 1 つのカテゴリにのみ属することができます。つまり、投稿はどのユーザーに対しても複数のカテゴリに属することはできません。
私ができるようにしたいのは、これに対する検証を作成することです。私は方法を理解することができませんでした。私は(PostCategory内)のようなことを試しました
validates_uniqueness_of :post_id, :scope => :category_id
しかし、私はこれが正しくないことを認識しています。これは、投稿が 1 つのカテゴリに属していることを確認するだけです。つまり、1 人のユーザーが投稿を分類すると、他のユーザーは分類できなくなります。
本当に私が探しているのは、PostCategory モデル (または他の場所) でこれを検証する方法です。また、データベーススキーマを変更することで物事が簡単になるのであれば、それにも反対ではありません (このスキーマは非常に単純だと感じただけです)。
何か案は?