我有用户。用户可以戳其他用户,也可以戳自己。每个戳都是定向的,并且不存在组戳。我想列出给定用户的所有戳(传入或传出),而不重复自戳(作为传入_和传出_戳存在)。
这是我的模型:
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)。想法?有没有一种直接使用关联的干净方法?
此外,在合并列表中,最好为每个 poke 设置两个布尔值来记录它们与当前用户的关系。outgoing
类似于和的东西incoming
。