mysql - Append query in ruby on rails -


this method returned record database.

   def wall_record(ref_id,followers_record,pid,sd_pid)         @wp_rec=wallpost.select('wp.id pid,wp.*,wi.id 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` wi on wi.wallpost_id = wp.id')         @wp_rec=@wp_rec.joins('inner join `epoker_users` u on u.id = wp.user_id')         @wp_rec=@wp_rec.joins('inner join `epoker_wallvideos` 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 

now want add mysql query -> where((wp.posted_by != 100000 , post_status = 1) or (wp.posted_by = 10000 , post_status in (1,2)))

how can please?

it easy =)

just include condition want quotes:

where("(wp.posted_by != 100000 , post_status = 1) or (wp.posted_by = 10000 , post_status in (1,2))") 

you can pass inside quotes param want

   where("(wp.posted_by != 100000 , post_status = #{post_status}) or (wp.posted_by =  #{posted_by} , post_status in (#{post_statuses_array.join(',')}))") 

and finally, can make more rails-like approach

where("(wp.posted_by ? != , post_status = ?) or (wp.posted_by = ? , post_status in (?))",100000, 1, 10000, [1,2]) 

instead of wp model have pass real table name! (but far can see table name.. not convenient, way)


Comments