2013-06-18 8 views
0

Каков наилучший способ реализовать что-то вроде доски в pinterest (коллекция объектов) в рельсах. Я пытаюсь прийти с ним, это похоже на реализацию массива. Вот моя логика для ассоциаций: у пользователя есть много коллекций, у пользователя много контактов, коллекции принадлежат пользователю.Дилемма ассоциации

класс пользователя

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

Pins класс

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

end 

Коллекции класс

class Collection < ActiveRecord::base 
    belongs_to :user 
end 

Так вот теперь моя путаница, как реализовать контроллер, который позволит мне создать коллекцию и внутри этого объекта коллекции создайте или нажмите булавки и сохраните их как другой объект для t он current_user. Надеюсь, я осмысление

Вот контроллер

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 

ответ

1

Вы должны использовать вложенные атрибуты для этого.

Проверьте это http://currentricity.wordpress.com/2011/09/04/the-definitive-guide-to-accepts_nested_attributes_for-a-model-in-rails-3/.

В основном то, что вам нужно:

# collection model 
accepts_nested_attributes_for :pins 

# view, see also nested_form in github 
f.fields_for :pins 
+0

спасибо, просто начните читать его –

0

Вы ищете has_many_through ассоциации. См. Раздел 2.4 в руководстве 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