I think that's you could use the counter_cache feature:

class AddReplyCount < ActiveRecord::Migration
  def self.up
    add_column :topics, :replies_count, :integer, :default => 0
    Project.reset_column_information
    Topic.find(:all).each do |t|
      t.update_attribute(:replies_count, t.replies.length)
    end
  end
 
  def self.down
    remove_column :topics, :replies_count
  end
end


class Topic < AR
  has_many :replies, :order => 'replies_count ASC'
  ...
end

class Reply < AR
  belongs_to :topic, :counter_cache => true
  ...
end


El mié, 21-04-2010 a las 04:10 -0700, DanC escribió:
> Hi,
> 
> I have a topic model which has_many replies.
> 
> On my topic index page I would like to be able to sort the topics by
> the number of replies.
> 
> In my topic model I have defined
> 
> Topic.rb
> ...
> has_many :replies
> ....
>   def total_replies
>     replies.count
>   end
> ....
> 
> And in my controller I have tried
> 
> @topics = Topic.find(:all, :conditions => ["forum_id = ?",
> @forum.id], :order => "total_replies DESC")
> 
> but I get the error Mcolumn "total_replies" does not exist
> 
> I know the column doesn't exist, but the question is, how can I get
> the 'total_replies' to behave as a column.
> 
> Thanks,
> 
> Dan
> 


-- 
Juan José Vidal Agustín
ATICA - Sección de Telemática
Universidad de Murcia
Tlf: +34 868888742
Fax: +34 868888337
juanj...@um.es

-- 
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-t...@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to