业务逻辑:用户每天只能为日记创建一个条目。在创建条目之前,它必须查询记录以确定是否已为今天创建条目。
我一直在寻找有关解决此问题的最佳方法的建议。我有一些想法如何在客户端实现它,但我真的想在模型层上进行验证。任何帮助将不胜感激。
答案 0 :(得分:6)
在日记帐表上创建唯一索引:
add_index :journal_entries, [:user_id, :created_on], unique: true
然后,只能创建一个具有给定user_id和date的记录,如果违反了该数据库,数据库将引发异常。请注意,created_on
必须是date
列,而不是datetime
。
这是唯一能让它100%确定在没有显式排他锁的情况下不会重复的唯一方法。