已经好几次了

时间:2015-02-03 21:19:05

标签: ruby-on-rails activerecord model

我想对我的代码有一个建议,因为我不能很好地使用has_many槽协会。

在我的情况下,用户可以标记为查看帖子。 他们可以评论帖子,他们也可以写关于帖子的说明。

这就是我所做的:

class User 
  has_many :posts, through: post_views
  has_many :posts, through: comments
  has_many :posts, through: notes
end

class Post
  has_many :users, through: post_views
  has_many :users, through: comments
  has_many :users, through: notes
end

class PostView
  belongs_to: user
  belongs_to: post
end

class Comment
  belongs_to: user
  belongs_to: post
end

class Note
  belongs_to: user
  belongs_to: post
end

可以吗?我能做些什么来获得更好的代码?

编辑=在穆罕默德·阿布沙迪回答之后     类用户       has_many:post_views       has_many:Viewed_posts,through :: post_views

  has_many :comments
  has_many :commented_posts, through: comments

  has_many :notes
  has_many :noted_posts, through: notes
end

class Post
  has_many :post_views
  has_many :viewer_users, through: post_views

  has_many :comments
  has_many :comments_users, through: comments

  has_many :notes
  has_many :notes_users, through: notes
end


class PostView
  belongs_to: user
  belongs_to: post
end

class Comment
  belongs_to: user
  belongs_to: post
end

class Note
  belongs_to: user
  belongs_to: post
end

好吗?

感谢

Lokhi

1 个答案:

答案 0 :(得分:0)

您需要与through部分的连接模型建立关系才能工作,所以

class User < ActiveRecord::Base
  has_many :post_views
  has_many :viewed_posts, through: :post_views
end
class PostView < ActiveRecord::Base
  belongs_to :posts
  belongs_to :users
end
class Post < ActiveRecord::Base
  has_many :post_views
  has_many :users, through: :post_views
end

其他两个模型也一样。