我想允许用户在网站上写评论。如果他们是注册用户,他们的用户名将与注释一起显示,否则允许他们键入显示的名称。
我打算在数据库中创建一个默认的匿名用户,并将每个未注册的评论链接到该用户。有没有更好的方法呢?
任何建议都很感谢。
谢谢。
发布于 2010-01-20 06:25:20
创建匿名用户的问题是,您需要检查评论是由“真实”用户发出的,还是在显示姓名时由匿名用户发出的,因此这会带来复杂性。此外,如果你有办法查看他们的个人资料页面,其中可能包括张贴历史,你需要排除匿名用户,但有一个例外。
一般来说,最好在你的评论上有一个代表用户可见名称的栏,如果提供了的话,只显示它,否则就显示注册用户的名称。例如,视图辅助对象可能如下所示:
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字段的内容,或者如果分配了用户,则显示用户名,或者作为显示某些内容的最后努力的“匿名”。
有时,在处理大量注释时,对数据库的许多部分进行反规范化是很有好处的,这样您就不必为了显示名称而通过联接加载用户表。用用户名填充这个字段,即使他们不是匿名的,也可能对此有所帮助,尽管这确实意味着当用户名更改时需要更新这些值,假设这甚至是可能的。
发布于 2010-01-19 19:49:29
我认为你可以让你的评论模型上的user_id为空,因为你也想允许非注册用户添加评论。就为非注册用户添加名称而言,有两个选项
选项1.在注释模型上添加一列,并将其命名为anonymous_user,您将在其中存储未注册用户的名称
选项2.创建另一个具有name和comment_id属性的模型AnonymousCommentor。
如果您打算将匿名用户用于除应用程序中的注释之外的其他用途,则可以使其多态,并使用合适的名称,如AnonymousUser而不是AnonymousCommentor
https://stackoverflow.com/questions/2092625
复制相似问题