Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/spring-boot/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails帮助查找器方法_Ruby On Rails_Ruby_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails帮助查找器方法

Ruby on rails Rails帮助查找器方法,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我正在尝试创建一个find方法。这应该可以找到所有tid为“1分钟”或“2分钟”且形式为“Nyhedsbrev”的Konkurrener 我试过这样的方法: Konkurrancer.where("tid = ? or ? and form = ?", "2 min", "1 min", "Nyhedsbrev") 它不起作用。它只会在表格为Nyhedsbrev的所有konkurrencer中找到。也许这是预期的效果 Konkurrancer.where("tid IN (?) AND for

我正在尝试创建一个find方法。这应该可以找到所有tid为“1分钟”或“2分钟”且形式为“Nyhedsbrev”的Konkurrener

我试过这样的方法:

Konkurrancer.where("tid = ? or ? and form = ?", "2 min", "1 min", "Nyhedsbrev")

它不起作用。它只会在表格为Nyhedsbrev的所有konkurrencer中找到。

也许这是预期的效果

Konkurrancer.where("tid IN (?) AND form = ?", ['2 min', '1 min'], 'Nyhedsbrev')
除此之外,您尝试使用的“OR”syntac在SQL中是这样编写的:

SELECT * FROM foo WHERE column1 = 'foo' OR column1 = 'BAR'

请注意,对于“或”条件,您仍然需要再次列出列名。

也许这是预期的效果

Konkurrancer.where("tid IN (?) AND form = ?", ['2 min', '1 min'], 'Nyhedsbrev')
除此之外,您尝试使用的“OR”syntac在SQL中是这样编写的:

SELECT * FROM foo WHERE column1 = 'foo' OR column1 = 'BAR'
请注意,对于“或”条件,您仍然需要再次列出列名。

请尝试以下操作:

Konkurrancer.where("tid = ? or tid = ?", "2 min", "1 min").where(:form => "Nyhedsbrev")
您还可以使用:

Konkurrancer.where("form = ? and (tid = ? or tid = ?)", "Nyhedsbrev", "2 min", "1 min")
试试这个:

Konkurrancer.where("tid = ? or tid = ?", "2 min", "1 min").where(:form => "Nyhedsbrev")
您还可以使用:

Konkurrancer.where("form = ? and (tid = ? or tid = ?)", "Nyhedsbrev", "2 min", "1 min")

您的SQL有点错误,我想您需要这样:

Konkurrancer.where(
    "(tid = ? or tid = ?) and form = ?",
    "2 min",
    "1 min",
    "Nyhedsbrev"
)

注意第二次提到的
tid
列名和括号。

您的SQL有点错误,我想您需要这样:

Konkurrancer.where(
    "(tid = ? or tid = ?) and form = ?",
    "2 min",
    "1 min",
    "Nyhedsbrev"
)

注意第二次提到的
tid
列名和括号。

我会批准你的回答。你知道我在哪里可以读到rails SQL finder方法吗。我现在不知道man可以在(?)中使用,您可以在这里阅读有关ActiveRecord查询接口的内容:通常,您可以在SQL中执行所有操作,也可以在ActiveRecord中执行。我将批准您的答案。你知道我在哪里可以读到rails SQL finder方法吗。我现在不知道人类可以在(?)中使用,您可以在这里阅读有关ActiveRecord查询接口的内容:通常,您可以在SQL中执行所有操作,也可以在ActiveRecord中执行所有操作。这是有效的SQL,但它不能按预期工作。谢谢。当然,它也起作用了,但没有必要的效果。多亏了你的评论,我修正了我的答案。这是有效的SQL,但它没有按预期工作。谢谢。当然,它也起作用了,但没有必要的效果。由于你的评论,我修正了我的答案。