if @chosen_campaign.network.nil?
case params[:type]
when "moderated"
@websites = Website.moderated.find(:all, :order => "name").paginate(
:per_page => 10,
:page => params[:page]
)
when "unmoderated"
@websites = Website.unmoderated.find(:all, :order => "name").paginate(
:per_page => 10,
:page => params[:page]
)
when "all"
@websites = Website.find(:all, :order => "name").paginate(
:per_page => 10,
:page => params[:page]
)
end
else
case params[:type]
when "moderated"
@websites = @chosen_campaign.network.websites.moderated.find(:all).paginate(
:per_page => 10,
:page => params[:page]
)
when "unmoderated"
@websites = @chosen_campaign.network.websites.unmoderated.find(:all).paginate(
:per_page => 10,
:page => params[:page]
)
when "all"
@websites = @chosen_campaign.network.websites.find(:all).paginate(
:per_page => 10,
:page => params[:page]
)
end
end
Refactorings
No refactoring yet !
Adam
April 16, 2009, April 16, 2009 16:16, permalink
class WebsitesController < ApplicationController
def index
scoped_website_class.of_type(params[:type]).find(:all, :order => 'name').
paginate(:per_page => 10, :page => params[:page])
end
private
def scoped_website_class
@chosen_campaign.network ? @chosen_campaign.network.websites : Website
end
end
I can't figure out any nice solution for ActiveRecord's find based on 2 conditions. Can anyone help me with some advice how to improve it?
Thanks in advance.