ユーザーがいます。ユーザーは、自分自身を突くだけでなく、他のユーザーを突くことができます。各ポークは方向性があり、グループポークは存在しません。セルフポーク(incoming_とoutgoing_pokesの両方として存在する)を複製せずに、特定のユーザーのすべてのポーク(着信または発信)を一覧表示したいと思います。
これが私のモデルです:
class User < ActiveRecord::Base
has_many :outgoing_pokes, :class_name => "Poke", :foreign_key => :poker_id
has_many :incoming_pokes, :class_name => "Poke", :foreign_key => :pokee_id
end
class Poke < ActiveRecord::Base
belongs_to :poker, :class_name => "User"
belongs_to :pokee, :class_name => "User"
end
モデルにメソッドを作成してUser
、ポークをマージしてみました。
def all_pokes
outgoing_pokes.merge(incoming_pokes)
end
ただし、これはセルフポーク(incoming_とoutgoing_pokesの両方)のみを返します。アイデア?アソシエーションを直接使用してこれを行うためのクリーンな方法はありますか?
また、マージされたリストでは、現在のユーザーとの関係を記録するために、各ポークに2つのブール値があると便利です。outgoing
とのようなものincoming
。