javascript - 创建一个 "repin"类型的操作,但为每个用户提供唯一的描述

标签 javascript ruby-on-rails

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

是否可以在图书页面上添加一个表单,以便有人“喜欢”这本书时可以编写新的描述,以便应用程序创建一本新书,其中所有属性都被简单地复制,但带有新的描述?我需要 JavaScript 吗?

谢谢!

最佳答案

has_many:通过

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

enter image description here

这就是所谓的多对多关系(这意味着您可以通过许多pin许多用户关联起来重新固定)。 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

关于javascript - 创建一个 "repin"类型的操作,但为每个用户提供唯一的描述,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24225500/

相关文章:

javascript - React Native Scroll View 不滚动也不跳到底部

javascript - Cycle.js 如何通过在弹出窗口外单击来关闭弹出窗口

javascript - 类型错误 : 'undefined' is not a function with Tablesorter only in Safari

ruby-on-rails - Ruby 调试器安装错误

ruby-on-rails - Rails bundle - 糟糕的解释器

ruby-on-rails - 如何使用 RJS 模板临时禁用表单

javascript - 如何为 passport.authenticate 创建可重复使用的代码?

javascript - Google Map Javascript API 不在 Ruby 循环中显示 InfoWindows

ruby-on-rails - 如何关闭 rails 中 HSTS 的 includeSubDomains?

javascript - 尽管所有数据都正确传递,但 Redux 状态未更新