2013-06-18 6 views
0

Quelle est la meilleure façon de mettre en œuvre quelque chose comme une carte dans pinterest (une collection d'objets) dans les rails. J'essaie de venir avec, il semble plus comme une mise en œuvre de tableau. Voici ma logique pour les associations: L'utilisateur a de nombreuses collections, l'utilisateur a de nombreuses broches, collections appartient à l'utilisateur.Association dilemme

classe User

class User < ActiveRecord::Base 
    has_many :pins, through: :collections 
    has_many :collections 
end 

Pins classe

class Pin < ActiveRecord::Base 
belongs_to :user 
has_many :collections 

end 

Collections classe

class Collection < ActiveRecord::base 
    belongs_to :user 
end 

Alors maintenant, est ici ma confusion, comment mettre en œuvre un contrôleur qui me permettra de créer une collection et à l'intérieur de cet objet de collection, créer ou pousser des épingles et les enregistrer comme un autre objet pour t il current_user. J'espère donner un sens

est ici le contrôleur

class CollectionsController < ApplicationController 
    def create 
    @collection = current_user.collections.new(params[:collection]) 
    #this where i'm confused , if it an array , how to implement it , to push or create a pin object inside ? 
    end 

end 

Répondre

0

Vous êtes à la recherche de l'association has_many_through. Voir la section 2.4 sur le guide Rails: http://guides.rubyonrails.org/association_basics.html

class User < ActiveRecord::Base 
    has_many :collections 
end 

class Pin < ActiveRecord::Base 
    has_many :collections, through: :pinnings 
end 

class Pinning < ActiveRecord::Base 
    belongs_to :pin 
    belongs_to :collection 
end 

class Collection < ActiveRecord::base 
    belongs_to :user 
    has_many :pins, through: :pinnings 
end