У меня проблема с попыткой сохранить AR finders DRY в моем приложении. Я создал приложение для ведения блога, которое выбирает все связанные страницы, записи, ссылки, теги и категории для блога, когда пользователь впервые просматривает его. Пример действия шоу для контроллера блога показан ниже:
def show
#find blog by user name
@user= User.find_by_login(params[:id])
@blog= @user.blog
@posts = Post.status("publish",@user).find(:all, :order => "created_at DESC")
@tags = @user.tags
@pages = Page.status("publish",@user).find(:all, :order => "created_at DESC")
@links = @user.links.public_link.find(:all, :order => 'created_at DESC')
@archives = @posts.group_by(&:month)
@categories = @user.categories.group_by(&:name)
session[:found_user]=@user.login
render :layout=>false
end
Как видите, он не очень СУХОЙ, поскольку в контроллере есть другие действия, которые вызывают такие же переменные экземпляра, как @tags и т. Д.
Как я мог сделать это более СУХИМ? Я попытался переместить его в модель блога, но мне все еще нужно вызывать различные переменные экземпляра, такие как @tags и т. Д. В контроллере.
Есть ли способ сохранить все эти переменные при первом вызове блога и повторно использовать их в контроллерах и действиях?
Спасибо за любой совет. Я использую Rails 2.1