协会困境

时间:2013-06-18 16:55:02

标签: ruby-on-rails associations

在rails中实现类似于pinterest(对象集合)的板子的最佳方法是什么?我试图用它,它似乎更像是一个数组实现。 这是我的关联逻辑:用户有很多集合,用户有很多针,集合属于用户。

用户类

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

Pins class

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

end

收藏类

class Collection < ActiveRecord::base
  belongs_to :user
end

所以现在我的困惑是,如何实现一个控制器,它允许我创建一个集合并在这个集合对象中,创建或推送引脚并将它们保存为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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

您正在寻找has_many_through关联。请参阅Rails指南中的第2.4节: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