亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何用OR而不是AND鏈接作用域查詢?

如何用OR而不是AND鏈接作用域查詢?

躍然一笑 2019-12-16 11:21:42
如何用OR而不是AND鏈接作用域查詢?我正在使用Rails3,ActiveRecord只是想知道如何用OR語句而不是AND鏈接作用域。例如Person.where(:name => "John").where(:lastname => "Smith")通常返回:name = 'John' AND lastname = 'Smith'但我想:`name = 'John' OR lastname = 'Smith'
查看完整描述

4 回答

?
偶然的你

TA貢獻1841條經驗 獲得超3個贊

你會做


Person.where('name=? OR lastname=?', 'John', 'Smith')

目前,新的AR3語法不提供任何其他OR支持(即不使用某些3rd party gem)。


查看完整回答
反對 回復 2019-12-16
?
溫溫醬

TA貢獻1752條經驗 獲得超4個贊

根據此拉取請求,Rails 5現在支持以下用于鏈接查詢的語法:


Post.where(id: 1).or(Post.where(id: 2))

通過這個gem還將功能移植到Rails 4.2中。


查看完整回答
反對 回復 2019-12-16
?
楊魅力

TA貢獻1811條經驗 獲得超6個贊

使用ARel


t = Person.arel_table


results = Person.where(

  t[:name].eq("John").

  or(t[:lastname].eq("Smith"))

)


查看完整回答
反對 回復 2019-12-16
?
互換的青春

TA貢獻1797條經驗 獲得超6個贊

Rails4的更新


不需要第三方寶石


a = Person.where(name: "John") # or any scope 

b = Person.where(lastname: "Smith") # or any scope 

Person.where([a, b].map{|s| s.arel.constraints.reduce(:and) }.reduce(:or))\

  .tap {|sc| sc.bind_values = [a, b].map(&:bind_values) }

舊答案


不需要第三方寶石


Person.where(

    Person.where(:name => "John").where(:lastname => "Smith")

      .where_values.reduce(:or)

)


查看完整回答
反對 回復 2019-12-16
  • 4 回答
  • 0 關注
  • 672 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號