[英]Ruby Gem ActiveRecord find method with multiple conditions
我正在使用三個數據庫表構建Sinatra應用程序: user
, post
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.