簡體   English   中英

在Rails中的ruby中追加查詢

[英]Append query in ruby on rails

此方法從數據庫返回了一些記錄。

   def wall_record(ref_id,followers_record,pid,sd_pid)
        @Wp_rec=Wallpost.select('Wp.id as Pid,Wp.*,Wi.id as Iid,Wi.imagename,Wv.videourl,U.firstname,U.username')
        @Wp_rec=@Wp_rec.where('Wp.id > ? ', pid) if pid.present? # pid->PostId
        @Wp_rec=@Wp_rec.where('Wp.id < ? ', sd_pid) if sd_pid.present? # sd_pid -> Scroll down
        @Wp_rec=@Wp_rec.where('Wp.posted_by IN (?) ', followers_record)  if followers_record.present?
        @Wp_rec=@Wp_rec.joins('Wp INNER JOIN `epoker_wallimages` as Wi on Wi.wallpost_id = Wp.id')
        @Wp_rec=@Wp_rec.joins('INNER JOIN `epoker_users` as U on U.id = Wp.user_id')
        @Wp_rec=@Wp_rec.joins('INNER JOIN `epoker_wallvideos` as Wv on Wv.wallpost_id = Wp.id')
        @Wp_rec=@Wp_rec.order('Wp.id DESC') if followers_record.present?
        @Wp_rec=@Wp_rec.limit(5) #if followers_record.present?
      end

現在我想添加mysql查詢-> where((Wp.posted_by != 100000 AND post_status = 1) OR (Wp.posted_by = 10000 AND post_status in (1,2)))

我該怎么做?

這很容易=)

只需在條件中加上您想要的內容:

where("(Wp.posted_by != 100000 AND post_status = 1) OR (Wp.posted_by = 10000 AND post_status in (1,2))")

您甚至可以在引號內傳遞所需的任何參數

   where("(Wp.posted_by != 100000 AND post_status = #{post_status}) OR (Wp.posted_by =  #{posted_by} AND post_status in (#{post_statuses_array.join(',')}))")

最后,您可以使用更多類似Rails的方法

where("(Wp.posted_by ? != AND post_status = ?) OR (Wp.posted_by = ? AND post_status in (?))",100000, 1, 10000, [1,2])

而不是Wp模型,您必須傳遞真實的表名! (但據我所知,這是您的表名。.順便說一句,不太方便)

暫無
暫無

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

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