创建一个" repin"键入操作,但每个用户都有唯一的描述

时间:2014-06-15 00:24:45

标签: javascript ruby-on-rails

在我的Rails应用程序中,它与Pinterest类似,用户上传带有描述的图像(书籍封面),并且他们可以“喜欢”另一个用户的书籍,将其添加到他们的个人资料中。但是,我希望描述文本作为推荐,因此每个用户都应该编写自己的推荐,即使该网站上已经存在该图书。

是否可以在图书页面上添加表单,以便有人可以在他们“喜欢”图书时编写新的说明,以便应用创建一个新图书,其中所有属性都可以简单地复制,但使用新描述?我需要javascript吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

has_many:通过

您需要使用has_many :through加入模式

enter image description here

这就是所谓的many-to-many关系(意味着您可以将many pinsmany users关联到repins)。 HMT设置使您能够将自己的数据添加到连接记录中 - 让您有机会创建每个repin所需的描述:

#app/model/pin.rb
Class Pin < ActiveRecord::Base
   has_many :repins
   has_many :users, through :repins
end

#app/models/repin.rb
Class Repin < ActiveRecord::Base
   #fields - id | user_id | pin_id | description | created_at | updated_at
   belongs_to :user
   belongs_to :pin
end

#app/models/user.rb
Class User < ActiveRecord::Base
   has_many :repins
   has_many :pins, through: :repins
end

这将允许您致电:

@pin = Pin.find params[:id]
@pin.repins.each do |repin|
   repin.description
end

@user = User.find params[:id]
@user.repins.each do |repin|
   repin.description
end