相关疑难解决方法(0)

Rails:如何使用OR而不是AND链接范围查询?

我正在使用Rails3,ActiveRecord

只是想知道如何用OR语句而不是AND来链接范围.

例如

Person.where(:name => "John").where(:lastname => "Smith")
Run Code Online (Sandbox Code Playgroud)

这通常会返回name ='John'和lastname ='Smith',但我想:

name ='John'或lastname ='Smith'

activerecord ruby-on-rails ruby-on-rails-3 rails-activerecord

131
推荐指数
14
解决办法
10万
查看次数

ActiveRecord OR查询哈希表示法

我知道有三个主要的符号为whereActiveRecord方法提供参数:

  1. 纯字符串
  2. 排列
  3. 哈希

指定andwhere方法是直截了当:

# Pure String notation
Person.where("name = 'Neil' AND age = 27")

# Array notation
Person.where(["name = ? AND age = ?", 'Neil', 27])

# Hash notation
Person.where({name: "Neil", age: 27})
Run Code Online (Sandbox Code Playgroud)

or为这个相同的where方法指定是为了哈希语法.可能吗?

# Pure String notation
Person.where("name = 'Neil' OR age = 27")

# Array notation
Person.where(["name = ? OR age = ?", 'Neil', 27])

# Hash notation DOESN'T WORK
Person.where({name: "Neil" OR age: 27})
Run Code Online (Sandbox Code Playgroud)

activerecord ruby-on-rails ruby-on-rails-4 rails-activerecord ruby-on-rails-5

72
推荐指数
1
解决办法
2万
查看次数

如何在ActiveRecord查询中使用OR条件

我想抓住所有提供电子邮件的用户或者名字和姓氏.例如:

users = User.where(:first_name => "James", :last_name => "Scott")
Run Code Online (Sandbox Code Playgroud)

这将返回所有具有名字"James"和"Scott"的用户.

users = User.where(:email => "james@gmail.com")
Run Code Online (Sandbox Code Playgroud)

这将返回用户的电子邮件为"james@gmail.com".

有没有办法做一个where子句来返回具有相同名字和姓氏的用户以及具有在一个where查询中匹配的电子邮件的用户,或者我是否需要在2个单独的where子句中进行合并.

activerecord ruby-on-rails ruby-on-rails-3

24
推荐指数
5
解决办法
3万
查看次数

合并两个ActiveRecord查询结果

我目前有两个活跃的记录查询,我想将它们组合在一起

joins("join relationships ON user_id = followed_id").
              where("follower_id = #{user.id}")

where(:user_id => user.id)

基本上我希望第二个的结果与第一个类似于UNIONSQL中的语句.可以用这种方式在ActiveRecord中完成吗?

我更喜欢使用union而不是必须连接followed_id字符串中的所有s并使用INsql中的子句.

有任何想法吗?

-----编辑------我正在寻找一种方法来使用延迟加载

activerecord ruby-on-rails ruby-on-rails-3

22
推荐指数
2
解决办法
2万
查看次数

Rails ActiveRecord where或clause

我正在寻找一个ActiveRecord查询,这就是我在下面的内容.不幸的是你不能像这样使用OR.什么是最好的执行方式? category_ids是一个整数数组.

.where(:"categories.id" => category_ids).or.where(:"category_relationships.category_id" => category_ids)
Run Code Online (Sandbox Code Playgroud)

sql activerecord ruby-on-rails where

7
推荐指数
2
解决办法
1万
查看次数

Rails 4:如何在查找方法的条件之间使用OR

我的问题类似于这个,但没有一个答案解决我的具体问题.

我想找到这样的东西:

conditions = {first_name: @search OR last_name: @search}
Stuff.where( conditions )
Run Code Online (Sandbox Code Playgroud)

显然,这种语法无效,但这是我能想到的最简单的方式来展示我想做的事情.我想在复杂/复合条件下使用更干净的哈希语法.

我知道你可以用这样的"纯字符串条件"手工写出来Stuff.where("first_name=#{@search} OR last_name=#{@search}") ......但这不是我想知道的.

更新看起来你可以对这样的数组执行OR : Stuff.where( some_column: ["option1", "option2"]). 这非常有用,但它并不能解决我的问题,因为我需要将OR应用于不同的key = value对... key=value OR key=value而不是key=value OR value.

Update2我不想使用SQL字符串的原因是因为我需要在几个部分中构建查询,而我不知道如何在仍然转义插入的变量时执行此操作.我没有测试过,但我认为这不会起作用:

conditions = ["(project_id=? AND sent_to_api=1)", @project_id]
conditions = conditions + ["first_name=? OR last_name=?", @search, @search]
Stuff.where( conditions )
Run Code Online (Sandbox Code Playgroud)

希望这是有道理的.有没有办法用SQL字符串语法做我需要的东西,同时仍然保留Rails的内置SQL转义?

ruby sql-injection ruby-on-rails ruby-on-rails-4

6
推荐指数
2
解决办法
9468
查看次数

OR运算符和Ruby where子句

可能真的很容易,但我无法在线查找关于此的文档我在Ruby中有两个activerecord查询,我想通过OR运算符连接在一起

@pro = Project.where(:manager_user_id => current_user.id )
@proa = Project.where(:account_manager => current_user.id)
Run Code Online (Sandbox Code Playgroud)

我是红宝石的新手,但我自己尝试使用||

@pro = Project.where(:manager_user_id => current_user.id || :account_manager => current_user.id)
Run Code Online (Sandbox Code Playgroud)

这不起作用,所以1.我想知道如何在Ruby和2中实际执行此操作.如果那个人也可以在这样的ruby语句中让我对布尔语法有所了解.例如AND,OR,XOR ......

ruby activerecord ruby-on-rails-3

5
推荐指数
1
解决办法
1万
查看次数

使用 OR 组合多个命名范围

我正在尝试合并两个范围或向现有范围添加更多内容。

scope :public_bids, -> {
  where(status: [Status::ACCEPTED, Status::OUTBID, Status::SOLD, Status::NO_SALE],
        bid_type: [BidType::MANUAL, BidType::AUTO, BidType::LIVE])
scope :outbid_maxbids, -> {
  where(status: Status::OUTBID, bid_type: BidType::MAXBID)
Run Code Online (Sandbox Code Playgroud)

我无法确定如何将OR它们组合在一起或合并到一个范围中。有什么建议/指导吗?我更希望将它们合并到一个范围中。

ruby named-scope ruby-on-rails rails-activerecord

5
推荐指数
1
解决办法
4429
查看次数

Rails:Date.today过去的时间或:deadline_date

基本上,我有点困在这里。我正在使用Rails3.xx。我现在使用的代码如下

@email_reminder = ToDo.where(:reminder => true, :deadline_date =< Date.today)
Run Code Online (Sandbox Code Playgroud)

上面的代码显然不起作用。我到处搜索,但是几乎所有解决方案都是Rails 2.xx解决方案。如果今天的日期已过或截止日期是最后的日期,查找所有“电子邮件提醒”的最有效方法是什么?

(不必与上面使用的方法类似,但是如果您提供使用类似方法的方法,则将有所帮助)

提前致谢

ruby-on-rails

2
推荐指数
1
解决办法
2152
查看次数

在ActiveRecord查询中测试空字符串

在Rails应用程序中,使用ActiveRecord where方法检查属性是零还是空的最简洁方法是什么?

这有效,但似乎应该有一个更好的,内置的方式来做到这一点:

@items = Item.where :context => nil || ''
Run Code Online (Sandbox Code Playgroud)

当您的搜索包含"where"等词语时,Google-fu很难做到很多.

activerecord ruby-on-rails

1
推荐指数
1
解决办法
4233
查看次数