我一直在努力解决一个被证明非常困难的问题。我有一个用户模型,一个照片模型和一个评论模型。现在我的网站工作方式是用户可以对特定照片有很多评论。在反面,评论只能属于特定照片上的特定用户。
我已经阅读了有效记录协会的文档,而且我收集到的是我们无法使用has_many :through
关联,因为它似乎适用于模型之间的多态关联。我想知道是否可以在一方使用has_many :through
关联,在背面使用belongs_to
关联。
任何提示,指示和建议?我刚刚开始使用Ruby on Rails
感谢。
答案 0 :(得分:2)
这不会起作用吗?
class User
has_many :photos
has_many :comments
end
class Photo
belongs_to :user
has_many :comments
end
class Comment
belongs_to :user
belongs_to :photo
end
用户有很多照片和评论(他上传/撰写的照片和评论),每条评论都属于用户(作家)和评论的照片。
答案 1 :(得分:1)
#app/models/user.rb
class User < ActiveRecord::Base
has_many :photos
has_many :comments, through: :photos #-> probably won't work but I'd try it first
end
#app/models/photo.rb
class Photo < ActiveRecord::Base
belongs_to :user
has_many :comments do
def current_user #-> photo.comments.current_user
where user_id: self.user_id
end
end
end
#app/models/comment.rb
class Comment < ActiveRecord::Base
belongs_to :photo
belongs_to :user
end
-
您可以按如下方式访问照片的评论:
<% @user.photos.each do |photo| %>
<%= photo.comments.each do |comment| %>
<%= comment %>
<% end %>
<% end %>
如果您只想显示用户的评论,则可以使用current_user
ActiveRecord Association Extension:
<% @user.photos.each do |photo| %>
<%= photo.comments.current_user.each do |comment| %>
<%= comment %> #-> comments where user_id will be the same as photo's user_id
<% end %>
<% end %>
答案 2 :(得分:0)
你可以这样做:
User
has_many :comments
Photo
has_many :comments
belongs_to :user
Comment
belongs_to :user
belongs_to :photo