0

目前,My Rails (3) 应用程序在它们的关系已知之前创建对象(我存储Comment,然后要求用户登录/登录以验证该评论,之后 Comment 获得用户分配)。

我想确保每个评论始终回退给用户。为了避免必须到处测试@comment.user. 确保用户还允许我 validate_presence。

我可以看到两种方式,都看起来很丑。也许我缺少 Rails 或 ActiveRecord 的某些功能。

  1. 在种子或迁移中,创建一个 ID 为 1 的用户,将其称为匿名用户并将其分配为后备。
  2. comment.rb检查加载时的 user_id,如果为 null,则为其分配一个 User.new 。

这通常是怎么做的?

4

2 回答 2

1

如何为所有评论添加用户记录。即使对于未登录的用户。这只是每条匿名评论的另一条记录。在用户记录中,您可以保留最后一个 IP 地址和其他内容,例如每天最多匿名评论。

用户登录后,将评论重新分配给正确的用户并删除临时用户。对于新用户注册,将临时用户记录更新为已验证状态。

请注意,每个匿名评论都有所有者,但用户未经过验证。并且验证状态可以被视为用户属性。

是的,可以在会话中保留未经验证的用户数据。然而,会话有时被配置为存储在数据库中。所以从磁盘使用情况来看,结果与将临时用户存储在主用户表中相同,但数据更加碎片化。

于 2011-03-10T11:17:39.163 回答
0

也许暂时在会话中存储必要的东西,而不是在数据库中?我不喜欢在数据库中存储部分完整记录的想法。这是数据库完整性的冒险游戏。或者,您可以创建一个带有文本列的表,其中包含那些序列化的不完整对象。

于 2011-03-10T10:38:41.800 回答