Hi everyone,
So I have this app that I built which originally only needed to
support one site, and it runs quite fast. Now I added the ability to
run multiple sites on the same app, similar to how wordpress.com and
Posterous run multiple different sites with different domains and
content on the same software. However, since adding a Site model and
it’s associations, the app is much, much slower. Using EXPLAIN I can
see that the additional JOINs are causing bottlenecks, and I’m having
trouble figuring out what the best indexing and lookup strategy is.
Download objects can appear in 1 or more sites.
The models go like this:
class Site < ActiveRecord::Base
has_and_belongs_to_many :downloads
end
class Download < ActiveRecord::Base
acts_as_taggable
has_permalink :title
belongs_to :category
has_and_belongs_to_many :sites
end
require ‘ancestry’ # uses ancestry gem for hierarchies
class Category < ActiveRecord::Base
has_permalink :name, :permalink
has_ancestry
has_many :downloads
def to_s
path.map { |cat| cat.name }.join(" > ")
end
end
application_controller.rb
def set_site
@site = Site.first(:conditions => {:domain => request.domain})
do some other stuff like set up some site-wide titles, logos, etc.
end
Also, I want to be able to show only the categories that contain
active download objects for a particular site.
Can anyone help me figure out what the best way to go about this is?
Thanks!
Avishai