首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby on Rails - Optional Associations?

Ruby on Rails - Optional Associations?
EN

Stack Overflow用户
提问于 2010-01-19 18:06:05
回答 2查看 404关注 0票数 0

我想允许用户在网站上写评论。如果他们是注册用户,他们的用户名将与注释一起显示,否则允许他们键入显示的名称。

我打算在数据库中创建一个默认的匿名用户,并将每个未注册的评论链接到该用户。有没有更好的方法呢?

任何建议都很感谢。

谢谢。

EN

回答 2

Stack Overflow用户

发布于 2010-01-20 06:25:20

创建匿名用户的问题是,您需要检查评论是由“真实”用户发出的,还是在显示姓名时由匿名用户发出的,因此这会带来复杂性。此外,如果你有办法查看他们的个人资料页面,其中可能包括张贴历史,你需要排除匿名用户,但有一个例外。

一般来说,最好在你的评论上有一个代表用户可见名称的栏,如果提供了的话,只显示它,否则就显示注册用户的名称。例如,视图辅助对象可能如下所示:

代码语言:javascript
复制
class Comment < ActiveRecord::Base
  belongs_to :user

  def user_name
    self.anonymous_name or (self.user and self.user.name) or 'Anonymous'
  end
end

这将显示评论记录的anonymous_name字段的内容,或者如果分配了用户,则显示用户名,或者作为显示某些内容的最后努力的“匿名”。

有时,在处理大量注释时,对数据库的许多部分进行反规范化是很有好处的,这样您就不必为了显示名称而通过联接加载用户表。用用户名填充这个字段,即使他们不是匿名的,也可能对此有所帮助,尽管这确实意味着当用户名更改时需要更新这些值,假设这甚至是可能的。

票数 2
EN

Stack Overflow用户

发布于 2010-01-19 19:49:29

我认为你可以让你的评论模型上的user_id为空,因为你也想允许非注册用户添加评论。就为非注册用户添加名称而言,有两个选项

选项1.在注释模型上添加一列,并将其命名为anonymous_user,您将在其中存储未注册用户的名称

选项2.创建另一个具有name和comment_id属性的模型AnonymousCommentor。

如果您打算将匿名用户用于除应用程序中的注释之外的其他用途,则可以使其多态,并使用合适的名称,如AnonymousUser而不是AnonymousCommentor

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

https://stackoverflow.com/questions/2092625

复制
相关文章

相似问题

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