belongs_to,默认回退

时间:2011-03-10 10:26:18

标签: ruby-on-rails associations belongs-to

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

我想确保每个评论始终回归用户。为了避免在@comment.user到处测试。确保用户也允许我验证_presence。

我可以看到两种方式,看起来都很难看。也许我错过了Rails或ActiveRecord的一些功能。

  1. 在种子或迁移中,创建ID为1的用户,将其称为匿名用户并将其指定为回退。
  2. comment.rb中检查加载时的user_id,如果为null,则为其分配User.new。
  3. 这通常是怎么做的?

2 个答案:

答案 0 :(得分:1)

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

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

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

是的,可以在会话中保留未经验证的用户数据。但是,会话有时会配置为存储在数据库中。因此,结果与在磁盘使用方面存储主用户表中的临时用户相同,但数据更加分散。

答案 1 :(得分:0)

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