簡體   English   中英

Ruby Gem ActiveRecord查找具有多個條件的方法

[英]Ruby Gem ActiveRecord find method with multiple conditions

我正在使用三個數據庫表構建Sinatra應用程序: userpost like

我想運行一個查詢,在like表中找到一個條目, like所示:

FIND in like WHERE user_id == params[:user_id] AND post_id == params[:post_id]

(對於我將使用的一個條件: Like.find_by_user_id(params[:user_id])

我的問題是:

如何使用ActiveRecord Gem運行具有多個條件的查找查詢?

使用where

Like.where('user_id = ? AND post_id = ?', params[:user_id], params[:post_id])

要么

Like.where('user_id = :user_id AND post_id = :post_id', params)

重要的是要記住,需要將其中的參數轉換為預期的類型,例如params[:post_id].to_i

user_id列的find_by_user_id類似,您可以組合多個列名稱並獲取動態查找器find_by_user_id_and_post_id

Like.find_by_user_id_and_post_id(params[:user_id], params[:post_id])

find_by_ finder中有多個“bearable”列時,您可以使用where並提供條件,如下所示:

Like.where(user_id: params[:user_id], post_id: params[:post_id])

Like.find_by_user_id(params[:user_id]) - 在ActiveRecord 4中不推薦使用此語法。

而是嘗試使用ActiveRecord查詢接口的where方法來傳遞數組條件 例:

Like.where("user_id = ? AND post_id = ?", params[:user_id], params[:post_id])

如果您希望結果是一條記錄:

要替換find_by_whatever ,可以使用find_by(whatever) ,例如User.find_by(username:"UsernameIsMyUsername",password:"Mypassword") 如果只有一條記錄與搜索匹配,則應使用find_by

如果您期望結果是多個記錄:

如果您期望多於一個,您應該使用where where(username:"MyUsername",password:"Password") 這將返回數組中的所有結果記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM