在我的 Rails 应用程序中,它的工作方式与 Pinterest 类似,用户上传带有描述的图像(书籍封面),他们可以“喜欢”其他用户的书籍,并将其添加到他们的个人资料中。但是,我希望描述文本充当推荐,以便每个用户都应该编写自己的推荐,即使该书已存在于网站上。
是否可以在图书页面上添加一个表单,以便有人“喜欢”这本书时可以编写新的描述,以便应用程序创建一本新书,其中所有属性都被简单地复制,但带有新的描述?我需要 JavaScript 吗?
谢谢!
最佳答案
has_many:通过
您需要使用 has_many :through
加入模型
这就是所谓的多对多
关系(这意味着您可以通过将
)。 HMT 设置使您能够将自己的数据添加到连接记录中 - 让您有机会为每个 repin 创建所需的描述:许多pin
与许多用户
关联起来重新固定
#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/