Here are my scopes: default_scope :order => ''posted_on DESC'', :conditions => { :status => ''visible'' } named_scope :positive, :conditions => { :rating => ''positive'', :status => ''visible'' } named_scope :neutral, :conditions => { :rating => ''neutral'', :status => ''visible'' } named_scope :negative, :conditions => { :rating => ''negative'', :status => ''visible'' } named_scope :ignored, :conditions => { :status => ''ignored'' } Why i''m getting ALL records when i run these scopes? Whatever scope i run i''m getting all records, whatever i set ''visible'' or ''ignored'' state :-(. -- Posted via http://www.ruby-forum.com/.
Joao Silva wrote:> Here are my scopes: > > default_scope :order => ''posted_on DESC'', :conditions => { :status => > ''visible'' } > named_scope :positive, :conditions => { :rating => ''positive'', :status > => ''visible'' } > named_scope :neutral, :conditions => { :rating => ''neutral'', :status > => ''visible'' } > named_scope :negative, :conditions => { :rating => ''negative'', :status > => ''visible'' } > named_scope :ignored, :conditions => { :status => ''ignored'' } > > Why i''m getting ALL records when i run these scopes? Whatever scope i > run i''m getting all records, whatever i set ''visible'' or ''ignored'' state > :-(.How do you run them?. You should be as clear as possible to get appropriate answers. -- Posted via http://www.ruby-forum.com/.
Rails List wrote:> Joao Silva wrote: >> Here are my scopes: >> >> default_scope :order => ''posted_on DESC'', :conditions => { :status => >> ''visible'' } >> named_scope :positive, :conditions => { :rating => ''positive'', :status >> => ''visible'' } >> named_scope :neutral, :conditions => { :rating => ''neutral'', :status >> => ''visible'' } >> named_scope :negative, :conditions => { :rating => ''negative'', :status >> => ''visible'' } >> named_scope :ignored, :conditions => { :status => ''ignored'' } >> >> Why i''m getting ALL records when i run these scopes? Whatever scope i >> run i''m getting all records, whatever i set ''visible'' or ''ignored'' state >> :-(. > > How do you run them?. You should be as clear as possible to get > appropriate answers.Migration: create_table "messages", :force => true do |t| t.string "rating", :default => "neutral" t.boolean "ignored", :default => false t.datetime "created_at" t.datetime "updated_at" end Class: class Message < ActiveRecord::Base default_scope :order => ''posted_on DESC'', :conditions => { :ignored => false } named_scope :positive, :conditions => { :rating => ''positive'' } named_scope :neutral, :conditions => { :rating => ''neutral'' } named_scope :negative, :conditions => { :rating => ''negative'' } named_scope :ignored, :conditions => { :ignored => true } named_scope :commented, lambda { message_ids = Comment.connection.select_values("SELECT message_id FROM comments") {:conditions => {:id => message_ids}} } named_scope :today, :conditions => [''created_at BETWEEN ? AND ?'', Time.now.beginning_of_day, Time.now.end_of_day] end Message.ignored -> returns all records :-( -- Posted via http://www.ruby-forum.com/.
On Fri, Jul 24, 2009 at 2:01 AM, Joao Silva < rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Rails List wrote: > > Joao Silva wrote: > >> Here are my scopes: > >> > >> default_scope :order => ''posted_on DESC'', :conditions => { :status => > >> ''visible'' } > >> named_scope :positive, :conditions => { :rating => ''positive'', :status > >> => ''visible'' } > >> named_scope :neutral, :conditions => { :rating => ''neutral'', :status > >> => ''visible'' } > >> named_scope :negative, :conditions => { :rating => ''negative'', :status > >> => ''visible'' } > >> named_scope :ignored, :conditions => { :status => ''ignored'' } > >> >> >> Why i''m getting ALL records when i run these scopes? Whatever scope i > >> run i''m getting all records, whatever i set ''visible'' or ''ignored'' state > >> :-(. > > > > How do you run them?. You should be as clear as possible to get > > appropriate answers. > > Migration: > > create_table "messages", :force => true do |t| > t.string "rating", :default => "neutral" > t.boolean "ignored", :default => false > t.datetime "created_at" > t.datetime "updated_at" > end > > Class: > > class Message < ActiveRecord::Base > default_scope :order => ''posted_on DESC'', :conditions => { :ignored => > false }> named_scope :positive, :conditions => { :rating => ''positive'' } > named_scope :neutral, :conditions => { :rating => ''neutral'' } > named_scope :negative, :conditions => { :rating => ''negative'' } >You can write the above three named_scope as follows: named_scope :rating_type, lambda { |type| { :rating => type } } Usage: Message.rating_type( ''positive'' ) Message.rating_type( ''neutral'' ) Message.rating_type( ''negative'' )> > named_scope :ignored, :conditions => { :ignored => true }The above name_scope here redefines the previous definition.> > named_scope :commented, lambda { > message_ids = Comment.connection.select_values("SELECT message_id > FROM comments") > {:conditions => {:id => message_ids}} > }I''m not really sure what you''re trying to do here. Are you trying to retrieve all the message ids that have comments. I take it that you have the following type of association for a Comment: class Comment < ActiveRecord::Base belongs_to :message end If not, could you provide some more information about the Comment class and how Messages are associated with it? -Conrad> > named_scope :today, :conditions => [''created_at BETWEEN ? AND ?'', > Time.now.beginning_of_day, Time.now.end_of_day]> end > > Message.ignored -> returns all records :-(When you run the above what SQL is being generated in the logs? This would be a good place to look. -Conrad> > -- > Posted via http://www.ruby-forum.com/. > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
> named_scope :ignored, :conditions => { :ignored => true }> The above name_scope here redefines the previous definition.ok, so how i can fix it? imho this should work ,but not :-( -- Posted via http://www.ruby-forum.com/.
On Fri, Jul 24, 2009 at 5:36 AM, Joao Silva < rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > > named_scope :ignored, :conditions => { :ignored => true } > > > > The above name_scope here redefines the previous definition. > > ok, so how i can fix it? imho this should work ,but not :-(It really depends on what you''re trying to do. If you can post the SQL that''s being generated, we can better assist you. -Conrad> -- > Posted via http://www.ruby-forum.com/. > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Conrad Taylor wrote:> On Fri, Jul 24, 2009 at 5:36 AM, Joao Silva < > rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote: > >> >> > named_scope :ignored, :conditions => { :ignored => true } >> >> >> > The above name_scope here redefines the previous definition. >> >> ok, so how i can fix it? imho this should work ,but not :-( > > > It really depends on what you''re trying to do. If you can post > the SQL that''s being generated, we can better assist you. > > -ConradOk, here is my code: @messages = @brands.messages.ignored.paginate :per_page => 25, :page => params[:page] And sql generated: Message Load (4.0ms) SELECT * FROM `messages` WHERE (`messages`.brand_id = 2) AND (((`messages`.`ignored` = 0)) AND ((`messages`.`ignored` = 0) AND (`messages`.brand_id = 2))) ORDER BY posted_on DESC LIMIT 0, 25 -- Posted via http://www.ruby-forum.com/.
Update: For ignored: @messages = @brand.messages.ignored.paginate :per_page => 25, :page => params[:page] Message Load (4.0ms) SELECT * FROM `messages` WHERE (`messages`.brand_id = 2) AND (((`messages`.`ignored` = 0)) AND ((`messages`.`ignored` = 0) AND (`messages`.brand_id = 2))) ORDER BY posted_on DESC LIMIT 0, 25 For all: @messages = @brand.messages.all.paginate :per_page => 25, :page => params[:page] Message Load (9.5ms) SELECT * FROM `messages` WHERE ((`messages`.`ignored` = 0) AND (`messages`.brand_id = 2)) ORDER BY posted_on DESC -- Posted via http://www.ruby-forum.com/.
On Fri, Jul 24, 2009 at 5:48 AM, Joao Silva < rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Update: > > For ignored: > > @messages = @brand.messages.ignored.paginate :per_page => 25, :page => > params[:page] > > Message Load (4.0ms) SELECT * FROM `messages` WHERE > (`messages`.brand_id = 2) AND (((`messages`.`ignored` = 0)) AND > ((`messages`.`ignored` = 0) AND (`messages`.brand_id = 2))) ORDER BY > posted_on DESC LIMIT 0, 25 >This looks rather odd because you have the following statements specified twice: (`messages`.brand_id = 2) (`messages`.`ignored` = 0) Should the named_scope, :ignored, be set to true or false? Also, what the expected resultset that should be returned from the following statement: Message.ignored I would recommend building your named_scopes one at a time to get the result that you''re looking for at each step.> > > For all: > > @messages = @brand.messages.all.paginate :per_page => 25, :page => > params[:page] > > Message Load (9.5ms) SELECT * FROM `messages` WHERE > ((`messages`.`ignored` = 0) AND (`messages`.brand_id = 2)) ORDER BY > posted_on DESC >Same comments as the above. -Conrad> > -- > Posted via http://www.ruby-forum.com/. > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
From Message.ignored - all messages with ignored = false, others scopes (message.all, message.positive, etc) - all messages with given rating and ignored = true. -- Posted via http://www.ruby-forum.com/.
Joao Silva wrote:> From Message.ignored - all messages with ignored = false, others scopes > (message.all, message.positive, etc) - all messages with given rating > and ignored = true.Also: be default not showing records with ignored = true. -- Posted via http://www.ruby-forum.com/.
On Fri, Jul 24, 2009 at 6:44 AM, Joao Silva < rails-mailing-list-ARtvInVfO7ksV2N9l4h3zg@public.gmane.org> wrote:> > Joao Silva wrote: > > From Message.ignored - all messages with ignored = false, others scopes > > (message.all, message.positive, etc) - all messages with given rating > > and ignored = true. > > Also: be default not showing records with ignored = true.OK, I generated at ticket: #2953<https://rails.lighthouseapp.com/projects/8994-ruby-on-rails/tickets/2953> The easiest way to fix this for now is to remove the default_scope and rewrite the positive, neutral, and negative named scopes as you see fit. For example, if you would like positive, neutral, and negative named scopes to have a ignored value set to true, you can do the following: named_scope :rating_type, lambda { |type| { :rating => type, :ignored => true } } Usage: Message.rating_type( ''positive'' ) Message.rating_type( ''neutral'' ) Message.rating_type( ''negative'' ) Good luck, -Conrad> > -- > Posted via http://www.ruby-forum.com/. > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---