Ruby on rails 将属性添加到Rails中的连接模型

Ruby on rails 将属性添加到Rails中的连接模型,ruby-on-rails,Ruby On Rails,我有一个用户模型和一个图书模型,并加入了一个类似的模型 class Book < ActiveRecord::Base belongs_to :user # the like associations has_many :likes has_many :liking_users, :through => :likes, :source => :user class User < ActiveRecord::Base has_many :books # the like

我有一个用户模型和一个图书模型,并加入了一个类似的模型

class Book < ActiveRecord::Base
belongs_to :user
# the like associations
has_many :likes
has_many :liking_users, :through => :likes, :source => :user 

class User < ActiveRecord::Base
has_many :books
# the like associations
has_many :likes
has_many :liked_books, :through => :likes, :source => :book

class Like < ActiveRecord::Base
belongs_to :user
belongs_to :book 
我想在Like模型中添加一个属性,这样现在用户可以像书一样将其添加到他们的个人资料中,我希望用户能够编写推荐

我生成了属性Recommension:text到Like加入模型,但我不确定如何将其添加到视图中,以便用户可以编写一个与Like以及书和用户相关的推荐

我正在看这篇文章——它描述了一些类似的东西,但没有解释如何在视图中实现这一点


如果你能给我指出正确的方向,请告诉我。谢谢

我认为您应该为此建议创建一个单独的模型,依赖于类似的模型:

class Book < ActiveRecord::Base
  belongs_to :user
  has_many :comments
  has_many :commenters, :through => :comments, :source => :user 

class User < ActiveRecord::Base
  has_many :books
  has_many :comments
  has_many :commented_books, :through => :comments, :source => :book

class Comment < ActiveRecord::Base
  belongs_to :user
  belongs_to :book
要列出特定用户的所有评论,请执行以下操作:

# users controller (profile page)
def show
  @user = User.find(params[:id])
end

# show view of Users
@user.comments.includes(:book).each do |comment|
  "Comment on the book '#{comment.book.name}' :"
  comment.content
end

我想类似的功能性可以在ajax中使用?remote::true或纯javascript格式
您可以使用请求的响应附加一个表单,并使用新的like的id,然后再次通过ajax请求处理推荐

我认为您应该将like和推荐模型分开:您可以喜欢一本书,但不想推荐它,你也可以写一篇不好的文章,写一本与推荐书相反的书而不喜欢它。你可以像你说的那样创建一个新的模型注释或推荐,它的作用与Like model完全相同。很好,比如我重命名Like to be Comment,然后就这样做了。它可以有一个文本属性吗?我如何把它放到视图中,这样用户就可以填写它了?很有趣。因此,在用户配置文件页面上,我想显示他们所有的书籍推荐-这是否只是@user.commented\u books?我要尝尝这个tonite,谢谢!!不,这个@user.commented\u books将返回books对象,但您希望列出Comment对象:@user.comments是您想要的。然后你可以通过comment.book通过comment.book访问图书。我确实想要图书对象-用户页面会显示他们推荐的图书,当你点击图书时,它会在图书视图上显示他们的推荐书-我缺少什么吗?它可以这样工作,是的。这两种情况都适用。如果看到我的答案的更新,您可以显示所有评论的列表+书籍的名称,或者列出所有评论过的书籍。这是你的选择
# users controller (profile page)
def show
  @user = User.find(params[:id])
end

# show view of Users
@user.comments.includes(:book).each do |comment|
  "Comment on the book '#{comment.book.name}' :"
  comment.content
end