6

各アイテムのタイプのフィールドを使用して、タグ (tagsテーブル内) とアイテム (テーブル内)の間に多対多の関係を構築しようとしています。itemsinteger[]

Rails 4 (および postgres_ext 経由の Rails 3) がパラメーターを介して Postgres の配列機能をサポートしていることは知ってい:array => trueますが、それらを Active Record の関連付けと組み合わせる方法がわかりません。

has_manyこれにはオプションがありますか?これのための宝石はありますか?あきらめてhas_many :through関係を作成する必要がありますか (ただし、期待している関係の量では、これはおそらく管理不可能です)。

4

2 に答える 2

4

あなたが本当にする必要があるのは、

def tags
  Tag.where(id: tag_ids)
end

def add_tag(tag)
  self.tag_ids += [tag.id] unless tag_ids.include?(tag.id)
end

少なくともそれが私が現時点で行っていることです。私は、ハッシュ (hstore) とアクセス許可を使用して、かなりクールなことを行います。タグを処理する 1 つの方法は、 has_many を使用して作成し、利便性とパフォーマンスのために追加された文字列配列列にタグを保持することです (名前を取得するためだけに 2 つの関連するテーブルをクエリする必要はありません)。データベースでクールなことをするために必ずしもアクティブレコードを使用する必要はありません。

于 2013-03-25T12:10:18.010 に答える