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