【问题标题】:How to limit a model to one record per day (Rails)?如何将模型限制为每天一条记录(Rails)?
【发布时间】:2014-04-22 16:19:54
【问题描述】:

我想构建一个简单的应用程序,用户可以在其中跟踪他每天跑了多远。我希望它每天只有一个模型条目。如何将模型限制为每天只允许一个条目?我找到了一个解决方案,建议对具有独特每日日记的日记执行以下操作:

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

但是,我并不完全了解如何实现这一点。我是否必须为此索引设置另一个模型?

谢谢!

【问题讨论】:

  • 在技术上可能有很多方法可以做到这一点,但我建议首先从用户开始,并在用户界面级别考虑您希望它如何为他们工作。例如,您是否希望他们能够在一天中的任何时间进行输入,只要每天不超过一个?等等。然后从外向内而不是从内向外工作,并以此为基础做出实施选择。您应该能够从模型中强制执行您想要的任何内容,并从视图中呈现您喜欢的任何内容。
  • 我希望用户能够在一天中的任何时间进行输入。一旦他们做了那个条目,我希望视图中的元素消失。你会建议我怎么做?也许喜欢这个解决方案? stackoverflow.com/questions/17776245/…

标签: ruby-on-rails model limit


【解决方案1】:

您可能想从控制器执行此操作,我建议当用户尝试输入条目时,您使用first_or_create!

@entry = Entry.where(created_at: Time.now.beginning_of_day.utc..Time.now.end_of_day.utc).first_or_create!
@entry.update_attributes(entry_params)

以上代码查找在当前日期内创建的条目,如果不存在则创建一个。

【讨论】:

    猜你喜欢
    • 2014-05-08
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多