Ich habe ein Problem mit dem Versuch, AR Finders DRY in meiner Anwendung zu halten. Ich habe eine Blog-Anwendung erstellt, die alle zugehörigen Seiten, Posts, Links, Tags und Kategorien für ein Blog abruft, wenn ein Benutzer sie zum ersten Mal sieht. Eine Probe show-Aktion für den Blog-Controller ist unten dargestellt:Wie ActiveRecord Association DRY beibehalten?
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][email protected]
render :layout=>false
end
Wie man es sehen kann, ist nicht sehr trocken, da es andere Aktionen sind, die auf den gleichen Instanzvariablen nennen wie @tags usw. weiter in der Steuerung.
Wie könnte ich dies mehr trocken machen? Ich habe versucht, es in das Blog-Modell zu verschieben, aber ich muss immer noch die verschiedenen Instanzvariablen wie @Tags usw. im Controller aufrufen.
Gibt es eine Möglichkeit, alle diese Variablen zu speichern, wenn der Blog zum ersten Mal aufgerufen wird, und sie über Controller und Aktionen hinweg wiederzuverwenden?
Vielen Dank für einen Hinweis. Ich benutze Schienen 2.1
Wah, ich denke du hast ein paar Probleme mit deinem Shiftkey. – Node
Ernsthaft. Deine Frage tut mir weh. –