On Fri, Jul 24, 2009 at 2:01 AM, Joao Silva <
[email protected]> 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 [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to