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

Cha*_*ick 6 ruby activerecord ruby-on-rails ruby-on-rails-4

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

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

Kom*_*owy 7

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

add_index :journal_entries, [:user_id, :created_on], unique: true
Run Code Online (Sandbox Code Playgroud)

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

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

  • @BroiSatse:不正确,交易对你没有任何帮助.将逻辑推入数据库是唯一的方法. (2认同)