如何使用Rails 4跟踪模型属性何时发生变化?

时间:2014-07-25 09:43:16

标签: ruby-on-rails activerecord ruby-on-rails-4 model

我需要找到一种方法来跟踪模型属性从一种状态更改为另一种状态的特定时刻。

  • 例如,假设我有一个名为List的模型 voting_status,可以是truefalse
  • 具有印刷机的列表所有者可以更改该属性 从truefalse的按钮,以便其他用户可以开始投票。
  • 第一位用户投票后,voting_status会更改回来 其他用户不能再投票,即使他们没有机会在第一时间投票。
  • 所以我想制作一个if语句,检查用户是否在所有者点击按钮之间进行了投票,现在又通过使用我调用Vote的另一个模型进行投票,该模型跟踪用户投票和投票的项目。
  • 伪代码看起来像这样: vote = Vote.find_by(user_id: 4) list = List.find(5) if vote.created_at is_between list.voting_status_changed?(from: true, to: false).when..DateTime.now user cannot vote else user can vote end
  • 很遗憾,我没有找到任何可以返回所有者点击该按钮的日期的when方法或类似内容,从而更新了该属性。

有什么想法吗?谢谢。

2 个答案:

答案 0 :(得分:2)

您需要使用以下某种宝石来跟踪变化。

Espinita

Papertrail

Miks' Audited

所有上述宝石都适合你

编辑:我没用过,但您也可以试试Public Activity宝石。

答案 1 :(得分:0)

有可审计的宝石,可以帮到你。虽然还有很多其他类似的功能,但请参阅相关部分https://www.ruby-toolbox.com/projects/auditable