私はレールから複雑なデータを取得しようとしています。Rails 5 - ANDの代わりにOR条件を使ってレコードを取得する方法
私が欲しいのは、すべてのユーザー、それらに関連付けられている特定のプロジェクトに限定されたタスクです。
は、ここで参照するタスクスキーマです:
create_table "tasks", force: :cascade do |t|
t.date "start_date"
t.date "end_date"
t.integer "hours"
t.string "priority"
t.integer "project_id"
t.integer "user_id"
t.string "name"
t.string "description"
エンド
私はこの呼び出し
users = User.includes(:tasks).where('tasks.end_date Between ? AND ?', Date.today.beginning_of_week, Date.today.end_of_week).references(:tasks).where('tasks.start_date Between ? AND ?', Date.today.beginning_of_week, Date.today.end_of_week).references(:tasks).where('tasks.project_id = ?', @project.id).map { |user| user.as_json.merge({tasks: user.tasks.as_json}) }
でこれの一部を達成する私の問題は、私のクエリは、ベースのタスクを見つけていないことです彼らの日付に正確に。
私はその週内にstart_dateまたはend_dateを持つ週の範囲内のすべてのタスクを見つけようとしています。
これは1つのクエリで可能ですか、より高度なロジックが必要ですか?
@vijayおかげで起こっている正確に何であるように思わデータベースサーバー –