Railsでのクエリに少し問題があります。数が条件付きのRailsクエリ
は私が
user_plans
とが彼のrole.name
あるいずれかがデフォルト ... ORがuser_plans
を持っているに等しいていないすべてのusers
を選択すると、すべてのuser_plans.expire_date
は、次のとおりです。は実際に私の問題があります今日
user
にhas_many roles
user
にhas_many user_plans
users = User.where(gym_id: current_user.id).order(:id)
@users = []
for u in users
if u.roles.pluck(:name).include?('default')
add = true
for up in u.user_plans
if up.end_date > DateTime.now.to_date
add = false
end
end
if add
@users << u
end
end
end
ここまでこのコードは、しかし、複数のクエリと、私は必要なものを正確にやっています。 これを1つのクエリで構築する方法はわかりません。
私はないテストし、動作するはず
where COUNT(user_plans.expire_date < TODAY) == 0
User.where(gym_id:current_user.id:のみ(予定はありません人をフェッチしません、他の言葉で)少なくとも一つのuser_planを持つユーザーをフェッチするユーザーに.joinsを呼び出します).COUNT((user_plans.expire_date
'joins'を使うだけですか?!? – Fallenhero
@Jyotimishraこのクエリの正確な構文を知りたいですが、 – DR7