2016-07-28 11 views
0

私はキー(ドメイン)を持つ企業モデルを持っています。私はドメインも持っている接触モデルを持っています。has_manyからの最近のhas_one

これらの2つの間にhas_many関係が正常に設定されました。

has_many :contacts, class_name: 'Contact', primary_key: 'domain', foreign_key: 'domain' 

各連絡先にはdateフィールドがあります。私はcontactsの関係から最新の連絡先(dateによる)を私に得る関係をしたいと思います。

これは可能ですか?

私は私のような何かを行うことができます知っています:

def most_recent_contact 
    contacts.order('date desc null last').first 
end 

は、これが最善の方法ですか?それはレールですか道はありますか?提案に開放されています。

+1

あなたが意味するか - 任意のX 'company'の最新の連絡先を連絡先の関係から? – kiddorails

+0

はい。だから、特定の会社の場合、連絡先のセットはその会社のものです(例えば、xyz.comのすべての会社)。 – Nick

答えて

1

まあ、これは一方通行のようですが、それは(それはそれを繰り返し)の関係を「再利用」しません...

has_many :contacts, class_name: 'Contact', primary_key: 'domain', foreign_key: 'domain' 
has_one :most_recent_contact, -> { order date: :desc }, class_name: 'Contact', primary_key: 'domain', foreign_key: 'domain' 
+1

どちらのアプローチも、この情報を取得するのに十分な方法です。私は本当にこの1つが気に入りました!得られたdb-queryはそのままです:) – kiddorails

+0

ありがとうございます。それは、すでにクラス、プライマリ、および外部キーを定義しているhas_manyを使用するように教えることはできません。 – Nick