17

したがって、基本的には、独自の関連付けタイプを定義するための一般的なアプローチがあるかどうかを知りたいと思います。いくつかの詳細:

conversationsPG 配列 column を持つモデルがありますuser_ids。したがって、ユーザーの会話を取得するには、次を実行する必要があります。 select conversations.* from conversations where USER_ID = ANY(conversations.user_ids)

友人は現在廃止されているためfinder_sql、この疑似 has_many 関連付けを実装する最良の方法を知りたいですか?

現在、私は次のような方法を使用しています:

 def conversations
   Conversation.where("#{id} = ANY (conversations.users)")
 end

だから基本的に私は自分自身を実装することを考えてActiveRecord::Associations::CollectionAssociationいます.


4

3 に答える 3

0

どうですか:

Conversation.user.select{ |conversation| conversation.user_ids.include?(params[:id])

user_ids 列がシリアル化され、現在のユーザー ID が params[:id] によって渡されることを考慮すると、

主なアプローチは、配列がある場合、.include?(something) メソッドを使用して内部に「何か」があるかどうかを確認できることです。このように考えると、 select メソッドを使用して、 include メソッドを使用して、この配列内に ID を持つオブジェクト (この場合はユーザー) を実際に選択できます。私は明確ですか?

効いたか教えて...

于 2014-04-29T17:31:39.410 に答える