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/.
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 :-(
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 :-(
> The above name_scope here redefines the previous definition.
ok, so how i can fix it? imho this should work ,but not :-(
ok, so how i can fix it? imho this should work ,but not :-(
> named_scope :ignored, :conditions => { :ignored => true }
> The above name_scope here redefines the previous definition.
Ok, 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
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
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
Also: be default not showing records with ignored = true.
Also: be default not showing records with ignored = true.
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.