【发布时间】:2014-07-25 09:43:15
【问题描述】:
我需要找到一种方法来跟踪模型属性从一种状态变为另一种状态的特定时刻。
- 例如,假设我有一个
List模型,其属性名为voting_status,可以是true或false。 - 该属性可以由列表的所有者通过按下来更改
从
true到false的按钮,以便其他用户可以开始投票。 - 一旦第一个用户投票,
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方法或类似方法可以返回所有者单击该按钮的日期,从而更新属性。
有什么想法吗?谢谢。
【问题讨论】:
-
时间戳改变时更新?使用操作和时间戳创建审核日志?使用现有的审计日志 gem?
-
审核日志?听起来很有趣 :) 我以前从来没有用过,所以如果你知道一个好的起点,请告诉我。
-
其实,我也在考虑创建另一个模型来跟踪所有者每次单击按钮的时间。
-
CollectiveIdea's Audited,另一个我发现非常适合这种情况的宝石github.com/collectiveidea/audited
-
谢谢拉杰。我会看看并尝试整合它。
标签: ruby-on-rails activerecord ruby-on-rails-4 model