我有一个模特
class PatientProfile < ActiveRecord::Base
has_many :friendships
with_options through: :friendships, source: :friend do |model|
model.has_many :friends, -> { where(friendships: { status: 'accepted'}) }
model.has_many :friend_requests, -> { where(friendships: { status: 'requested'}) }
model.has_many :requested_friendships, -> { where(friendships: { status: 'requestor'}) }
end
uids = ["123", "456"]
我想查询PatientProfile
以查找uid在uids数组中的所有记录,并且两个用户之间没有友谊记录。
这应该可以通过加入,但我在documentation
中被绊倒了编辑:
uid
位于PatientProfile
在Friendships
表格中有两列,friend_id
和patient_profile_id
。我只想PatientProfile
friend
列表中uids
不在patient_profile_id
,而return (((vat_part(discount_percent, date, options) + non_vat_part(discount_percent, date, options))*1.2).round(2)/1.2).round(rounded ? 2 : 1000)
不在,{1}}。{/ 1>
答案 0 :(得分:0)
我们错过了一些关于你没有友谊记录的意思的背景,但是如果你正在寻找记录,那么与uids建立友谊就是:
PatientProfile.includes(:friendships).where(uid: [123, 456], friendships: {id: nil})
<强>更新强>
或者如果您更喜欢范围版本:
scope :no_friendships, -> { includes(:friendships).where(friendships: {id: nil}) }
现在你可以这样做:
PatientProfile.no_friendships.where(uid: [123, 456])