Ruby on Rails
Monday, December 29, 2014
You can do that inside a .try{} block too, same idea:
Order.try{|query|
if x==1
query
else
query.unscope(:where)
}
On Dec 29, 2014, at 4:30 AM, Frederick Cheung <frederick.cheung@gmail.com> wrote:
On Monday, December 29, 2014 1:16:40 AM UTC, Josh wrote:I'd like to remove all existing constraints from an ActiveRecord::Relation and leave the rest in-tact.
I am not looking for #unscoped since I would like to keep any joins/order clauses around.
Additionally, I would like to re-use the constraints that were removed in another query, so the ability to call #to_sql on them would be a very nice bonus.
Sounds like you are looking forsome_scope.unscope(:where)FredThis is the best I've been able to hack together:
Order.where(id: 1).where(id: 2).arel.constraints[0].to_sql
=> "`orders`.`id` = 1 AND `orders`.`id` = 2"
...but that just seems wrong. As far as I can tell #constraints always has one item in it, but I don't know that will always be true.
Thanks!
--
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/1804d715-ebbc-48c9-892b-d73f72b6f1f7%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment