gpt4 book ai didi

mysql - Rails 4.1、Ruby 2.1、Devise,为什么我的 .where() 中有多个条件的 'syntax error, unexpected tConstant'?

转载 作者:行者123 更新时间:2023-11-29 06:28:07 26 4
gpt4 key购买 nike

我从类似的帖子中看到,这通常是前一行中缺少某些结束字符的情况,但我在这里没有看到。 Courses 资源嵌套在 Schools 中,我可以打印出 user_id 和 school.id。

错误似乎出现在具有多个条件的 Course.where 子句中 (user_id: current_user.id AND school_id: @school.id)上面的单条件 where 子句似乎工作得很好。

courses_controller.rb

class CoursesController < ApplicationController

before_action :set_school

helper_method :calculated_grade_stub


# GET /courses
# GET /courses.json
def index
if @school.nil?
@courses = Course.where(user_id: current_user.id)
else
@courses = Course.where(user_id: current_user.id AND school_id: @school.id)
end
end

最佳答案

运算符是&&and,不是AND

但是,这不是问题的根本原因:您似乎对 Hash 文字的一般语法感到困惑。 Hash 文字中的条目由逗号分隔,而不是由运算符分隔:

@courses = Course.where(user_id: current_user.id, school_id: @school.id)

另请注意,if 是一个表达式,因此会返回一个值,因此您可以轻松将该方法重构为

def index
@courses = if @school.nil?
Course.where(user_id: current_user.id)
else
Course.where(user_id: current_user.id, school_id: @school.id)
end
end

关于mysql - Rails 4.1、Ruby 2.1、Devise,为什么我的 .where() 中有多个条件的 'syntax error, unexpected tConstant'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29691308/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com