我想听听关于我的代码的建议,因为我不太可能很好地使用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
可以吗?我能做些什么来获得更好的代码?
编辑=在Mohammad AbuShady回答之后类用户has_many:后期视图has_many:viewed_posts,通过::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
您需要与连接模型建立关系才能使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
其他两款车型也是如此。