自定义rails has_many关联(通过pg数组)

Vla*_*ich 14 ruby ruby-on-rails ruby-on-rails-3

所以基本上我想知道是否有一些常用的方法来定义自己的关联类型.一些细节:

我有一个conversations具有PG阵列列的模型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
Run Code Online (Sandbox Code Playgroud)

所以基本上我正在考虑实现自己的,ActiveRecord::Associations::CollectionAssociation并想知道是否有一些很好的参考,或者你是否可以建议从哪里开始


Ham*_*dan 0

怎么样:

Conversation.user.select{ |conversation| conversation.user_ids.include?(params[:id])
Run Code Online (Sandbox Code Playgroud)

考虑到 user_ids 列已序列化并且当前用户 id 通过 params[:id] 传递

主要方法是,如果你有一个数组,你可以使用 .include?(something) 方法检查它内部是否有“东西”。这样想,您可以使用 select 方法通过 include 方法实际选择其 ID 在此数组内的对象(在本例中为用户)。我说清楚了吗?

告诉我是否有效...