在我的Rails应用程序中,它与Pinterest类似,用户上传带有描述的图像(书籍封面),并且他们可以“喜欢”另一个用户的书籍,将其添加到他们的个人资料中。但是,我希望描述文本作为推荐,因此每个用户都应该编写自己的推荐,即使该网站上已经存在该图书。
是否可以在图书页面上添加表单,以便有人可以在他们“喜欢”图书时编写新的说明,以便应用创建一个新图书,其中所有属性都可以简单地复制,但使用新描述?我需要javascript吗?
谢谢!
答案 0 :(得分:2)
has_many:通过
您需要使用has_many :through
加入模式
这就是所谓的many-to-many
关系(意味着您可以将many pins
与many 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