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
[email protected]
--
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.