アプリケーションで AR ファインダーを DRY に保つことに問題があります。ユーザーが最初にブログを表示したときに、ブログに関連するすべてのページ、投稿、リンク、タグ、およびカテゴリを取得するブログ アプリケーションを作成しました。ブログ コントローラの show アクションの例を以下に示します。
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 などの同じインスタンス変数を呼び出す他のアクションがあるため、あまり DRY ではありません。
これをもっとDRYにするにはどうすればよいですか?ブログ モデルに移動しようとしましたが、コントローラーで @tags などのさまざまなインスタンス変数を呼び出す必要があります。
ブログが最初に呼び出されたときにこれらすべての変数を保存し、コントローラーとアクションで再利用する方法はありますか?
アドバイスありがとうございます。Rails 2.1を使用しています