在创建ActiveRecord模型之前获取它的ID,以便将其放在其他列(users.created_by_id == users.id)中?

时间:2011-04-26 01:18:41

标签: sql ruby-on-rails

我想知道是否有更好的方法来实现这一目标......

我想在users表中设置一个字段,users.created_by_id为创建此新用户的用户的ID。有人创建自己(注册),或者管理员创建它们。如果管理员创建了它们,我可以使用他们的id。但如果用户创建自己,我唯一的选择是:

  1. 将其保留为null,以便查找已注册的用户,我会查找created_by_id IS NULL
  2. 使用它的ID创建后再次保存。
  3. 它们都不理想,我想知道有推荐的方法吗?我在Rails中这样做。

2 个答案:

答案 0 :(得分:0)

您可以使用after_create回调(如果需要,请参阅此rails guide)来存储ID。对于逻辑,您可以说类似,如果created_by_id为null,则将其放入我的id。

我希望这会有所帮助。

答案 1 :(得分:0)

将字段留空是没有错的。这实际上取决于你如何显示这些信息。如果您的目的不是查询由其他用户创建的所有用户,而只是为了显示,您可以覆盖created_by的访问者,以返回自己或列中id指定的用户。