我正试图为我的RoR博客网站设计一个评论系统,并且在架构上我遇到了一些概念上的问题。就模型而言,我有博客、用户和评论。
我的问题是:为了加强评论和博客之间的链接,我通过blogpost协会(@blogpost.comments.build(:args)).创建了每个新的评论(@注释)但是,我不知道如何将特定注册用户与他/她的评论联系起来。我将user_id属性排除在注释模型之外,因为我希望防止人们将评论归因于错误用户的可能性。
对于如何最好地实现这样一种关系的评论系统,有什么想法吗?提前谢谢你!
发布于 2011-05-09 02:39:25
假设:
User has_many comments
Comment belongs_to user在您的控制器中保存注释时,只需执行以下操作:
@comment.user = current_user if current_user
@comment.save如果注释是由未注册的用户完成的,@comment.user就会保持为空。
发布于 2011-05-09 02:41:01
你可以有一个联想:
User has_many comments through blog_posts所以,现在你可以做:
current_user.comments另一种方法是通过blog_post:
current_user.blog_post.comments此外,您可以使用漂亮的act_as_commentable插件:)
发布于 2011-05-09 02:52:43
如果您可以在保存或发布新的注释方法中访问当前登录的用户,则不需要将attr_accessible设置为user_id。
如果它们没有登录,那么您希望当前用户为空/假。
如果您正在使用任何身份验证插件,比如authlogic或devise,这应该是可用的。在我的创作逻辑经验中,通常在您的current_user中有一个ApplicationController方法。
class ApplicationController
helper_method :current_user_session, :current_user
private
def current_user_session
return @current_user_session if defined?(@current_user_session)
@current_user_session = UserSession.find
end
def current_user
return @current_user if defined?(@current_user)
@current_user = current_user_session && current_user_session.user
end
endhttps://stackoverflow.com/questions/5931952
复制相似问题