我在尝试让 AR 查找器在我的应用程序中保持干燥时遇到问题。我创建了一个博客应用程序,当用户第一次查看它时,它会获取博客的所有相关页面、帖子、链接、标签和类别。博客控制器的示例显示操作如下所示:
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