如何限制模型每天创建一条记录?

时间:2014-03-28 21:17:32

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

业务逻辑:用户每天只能为日记创建一个条目。在创建条目之前,它必须查询记录以确定是否已为今天创建条目。

我一直在寻找有关解决此问题的最佳方法的建议。我有一些想法如何在客户端实现它,但我真的想在模型层上进行验证。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:6)

在日记帐表上创建唯一索引:

add_index :journal_entries, [:user_id, :created_on], unique: true

然后,只能创建一个具有给定user_id和date的记录,如果违反了该数据库,数据库将引发异常。请注意,created_on必须是date列,而不是datetime

这是唯一能让它100%确定在没有显式排他锁的情况下不会重复的唯一方法。