1

我有一个包含帖子的 rails (4.1.6) 博客应用程序。它为用户使用设计,我正在集成paper_trail gem 以进行版本控制。

在与 paper_trail 集成之前,每个 Post 都有一个 belongs_to :user,在 create: 的顶部填充了 current_user @post = Post.new(user: current_user)。但是,由于 paper_trail 存储项目的创建者,我想使用 @post.originator 来访问创建者。

在此博客应用程序中,只有登录用户才能创建帖子。在我的验证器中,我需要检查 @post.originator 是否存在,但是在验证我的帖子时,发起人是空白的(可能是因为在数据库中创建帖子之前,paper_trail 不会保存纸迹数据)。

因此,当我创建一个帖子并且验证器运行时,使用 originator 代替,我收到一个错误,即无法创建帖子,因为没有创建者。

我看到的选项是:

  1. 验证 user_signed_in?在控制器操作中,并且不对模型中的创建者(用户/发起者)进行验证
  2. 在我的所有模型中创建一个冗余用户字段来存储帖子的创建者,并将其用于验证
  3. 做1和2
  4. 不知何故(如何?)使 paper_trail 提供模型的发起者并在验证中使用它

我怀疑理想的方法是#3或至少#1或#2,但我想检查是否有任何方法可以实现#4。

谢谢阿南德

4

0 回答 0