2016-05-21 9 views
0

Ich bin neu bei Rails. Ich habe einen Controller für Posts, Kommentare und Anhänge. Ich habe meinen eigenen Attachments-Controller erstellt, seit ich die FilePicker-API verwende. Ich versuche es so zu erstellen, dass ein Benutzer eine Datei an einen Post anhängen und eine Datei an einen Kommentar anhängen kann, wenn sie dies wünschen.Rails-Attach-Datei mit mehreren Controllern

Beiträge Controllers

def create 
    @post = current_user.posts.build(post_params) 

    if @post.save 
     flash[:success] = "Your post has been created!" 
     redirect_to root_path 
    else 
     flash[:alert] = "Your new post couldn't be created! Please check the form." 
     render :new 
    end 
end 
... 
private 

    def post_params 
    params.require(:post).permit(:caption, :user_id) 
    end 

Anhänge-Controller

def create 
    title = params[:attachment][:title] 

    if Attachment.exists?(:title => title) 
     redirect_to attachments_path 
    else 
     @attachment = current_user.attachments.build(attachment_params) 
     @attachment.user_id = current_user.id 
     name = params[:attachment][:name] 
     @attachment.save 
     redirect_to attachments_path 
    end 

end 
... 
private 

    def attachment_params 
     params.require(:attachment).permit(:title, :user_id, :name) 
    end 

Beiträge anzeigen für die Einreichung einen Beitrag

<%= simple_form_for(@post) do |f| %> 

<div class="profile_container"> 
    <div class="updateArea"> 

     <%= f.text_area :caption, class: "textarea", placeholder: "Post here", label: false %> 

     <%= f.button :submit, "Post", disabled: true, class: "post_button", id: "post_button_padding" %> 

     <%# <%= f.association :user %> 
    </div> 
</div> 

Attachments

eine Datei hochzuladen sehen

routes.rb

resources :posts do 
    resources :comments 
end 

resources :attachments 

So habe ich Kommentare zu Beiträgen angebracht und erstellt, dass die Assoziation über verschachtelte Routen und die Verbindungen zwischen den Modellen über has_many und belongs_to. Muss ich jetzt das gleiche für Attachments tun oder gibt es eine andere Methode? Ich möchte eine Beziehung zwischen Posts/Kommentaren und Anhängen, so dass ein Benutzer Dateien anhängen kann, aber ich habe auch einen separaten Abschnitt in meiner App, um Dateien ohne "Post" zu laden/herunterzuladen, weshalb ich eine separater Controller für Anhänge Jeder Rat, wie man diese Funktionalität erstellt, so dass ein Benutzer eine Datei an seinen Beitrag anhängen kann, würde sehr geschätzt werden.

Antwort

0

Ich würde empfehlen, Anhänge zu trennen, wie Sie sie in zwei separate Einheiten sehen. Ich würde sagen, post_attachments gehören zu Posts/Kommentare und dann würde ich eine zweite Modell-Entity so etwas wie direct_upload, die überhaupt nicht mit Posts/Kommentare zugeordnet werden und die direkte Upload/Download-Situation, die Sie erwähnt haben. Dies erleichtert Ihnen die Pflege, da Sie bereits eigene Dateianhänge rollen und wenn jemand mit Ihnen zusammenarbeitet, wird klar, was von jeder Modellklasse erwartet wird.

+0

Ich dachte daran, das gleiche zu tun, nur um es sauber zu halten, wie Sie vorgeschlagen haben. Irgendwelche Ratschläge, wie ich das aktuelle Attachments-Modell, das ich habe, in das Posts-Modell integrieren würde? – user3318660

Verwandte Themen