首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >RoR博客平台评论系统

RoR博客平台评论系统
EN

Stack Overflow用户
提问于 2011-05-09 02:36:28
回答 4查看 728关注 0票数 2

我正试图为我的RoR博客网站设计一个评论系统,并且在架构上我遇到了一些概念上的问题。就模型而言,我有博客、用户和评论。

  • 用户 has_many 博客
  • 博客 belongs_to one 用户
  • 博客 has_many Comments
  • 注释可能也可能不属于已注册的用户(我希望未在站点注册的用户也能够进行评论)。

我的问题是:为了加强评论和博客之间的链接,我通过blogpost协会(@blogpost.comments.build(:args)).创建了每个新的评论(@注释)但是,我不知道如何将特定注册用户与他/她的评论联系起来。我将user_id属性排除在注释模型之外,因为我希望防止人们将评论归因于错误用户的可能性。

对于如何最好地实现这样一种关系的评论系统,有什么想法吗?提前谢谢你!

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2011-05-09 02:39:25

假设:

代码语言:javascript
复制
User has_many comments
Comment belongs_to user

在您的控制器中保存注释时,只需执行以下操作:

代码语言:javascript
复制
@comment.user = current_user if current_user
@comment.save

如果注释是由未注册的用户完成的,@comment.user就会保持为空。

票数 1
EN

Stack Overflow用户

发布于 2011-05-09 02:41:01

你可以有一个联想:

代码语言:javascript
复制
User has_many comments through blog_posts

所以,现在你可以做:

代码语言:javascript
复制
current_user.comments

另一种方法是通过blog_post:

代码语言:javascript
复制
current_user.blog_post.comments

此外,您可以使用漂亮的act_as_commentable插件:)

可解说

票数 1
EN

Stack Overflow用户

发布于 2011-05-09 02:52:43

如果您可以在保存或发布新的注释方法中访问当前登录的用户,则不需要将attr_accessible设置为user_id

如果它们没有登录,那么您希望当前用户为空/假。

如果您正在使用任何身份验证插件,比如authlogic或devise,这应该是可用的。在我的创作逻辑经验中,通常在您的current_user中有一个ApplicationController方法。

代码语言:javascript
复制
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
end

上面的代码来自Authlogic快速示例

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5931952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档