我正在为会员数据库做一个应用程序。
每个人都可能有一个伴侣。在显示列表时,我只想为每个家庭设置一行,所以目前我正在比较名字,如果该人的名字排在第二位,则不显示该行。像这样
person.first_name != [person.first_name, person.partner.first_name].sort[0]
这意味着每个家庭只显示一次,而不是两次 - 每个合作伙伴一次。
我正在视图中执行此操作。
必须有更好的方法来做到这一点,如果我能在数据库级别做到这一点,那就太好了。如果这有所作为,我正在使用 postgresql。
编辑
抱歉,如果不清楚。
假设第 1 个人的名字为“Edward”,第 2 个人的名字为“Fay”。爱德华和费伊结婚了。
我只想在我的列表中显示一次 - 我希望一行看起来像这样
Surname First name Address etc
Mysurname Edward ....
Fay
我不想先用 Fay 再次显示它,因为我在人员列表中同时拥有 Fay 和 Edward,所以我在问题的第一部分使用 ruby 来检查我是否应该显示该行 - 它比较了他们名字,并且仅当该人的名字在他/她的伴侣的名字之前时才执行该行。
这是我的人模型的相关部分
class Person < ActiveRecord::Base
has_one :relationship_link, :foreign_key => :person_id, :dependent => :destroy, :include => :partner
has_one :partner, :through => :relationship_link, :source => :person_b, :class_name => "Person"
我希望这更清楚