基本的に、独自のアソシエーションタイプを定義する共通のアプローチがあるかどうかを知りたいと思います。 いくつかの詳細:カスタムレールhas_many association(pg配列を介して)
私はモデルconversations
にPG配列の列user_ids
を持っています。 select conversations.* from conversations where USER_ID = ANY(conversations.user_ids)
finder_sql
ので、それの友人が廃止されて、私は本当にこの擬似にhas_manyの関連付けを実施するための最良の方法だろうかを知りたい: ので、利用者の会話を取得するために私が実行する必要がありますか?だから、基本的に私はActiveRecord::Associations::CollectionAssociation
自分自身を実装すると思っていますし、いくつかの良い参照がそこにいるかどうかを知りたいのか、アドバイスできればどこから始めれば
def conversations
Conversation.where("#{id} = ANY (conversations.users)")
end
:
は、現在、私は同じような方法を使用します
Conversation.user.select{ |conversation| conversation.user_ids.include?(params[:id])
コン:
あなたはスキーマを制御できますか?私は外部キーを保持するために配列を使用するのは悪い習慣であり、今あなたを引き起こしているトラブルのためだけではないので、私は尋ねます。配列を使用することを考慮する必要があるのは、いつもデータベースに意味を持たない不可分なものとして扱うことができるときだけです。 –
そうですね、私は教育的目的のためにこのアプローチをとることに決めました。さらに、私はアレイの性能には全く驚いています。私に納得させたもう1つの事はこれでした:http://blog.2ndquadrant.com/postgresql-9-3-development-array-element-foreign-keys/、それでは、それほど悪い考えではないと思っていたのですが、後で –
あなたはおそらくあなたもSQLビューに行くことができるARRAYと一緒に行くことにしましたか? https://github.com/thoughtbot/scenicそして、基本的にあなたの配列を非正規化する別のテーブルを作成してください:(conversation_id、user_id)(many-many)そうすればnormalを使うことができます。 –