【问题标题】:Implementing a delayed association in Rails在 Rails 中实现延迟关联
【发布时间】:2013-05-05 12:51:38
【问题描述】:

这是我面临的编程挑战。我是新手……

我想用 Rails 方式来做这件事,用优雅的代码,并在这个过程中学到一些东西。

在我的应用中,玩家跟踪一个动作(从半小时开始,25 分钟的焦点)。 action#new 表单在开始时加载,但直到 25 分钟结束时才保存。最后 2 分钟是回顾,包括一些必填的“进展如何”问题。

我现在想添加一个 Insights 表。我正在描绘一个单独的、小的“新洞察”形式,它融入了更大的“新行动”形式。我想随时保存 Insight。

我还希望 Insight 与特定的 Action 相关联...即使该 Action 尚未创建,而且我不知道它会有什么 id(其他人可能会在我之前记录他们的 Action )。如果创建了 Insight 但 Action 失败了,我还不确定该怎么做...我可以允许 Action-less Insights。

我该如何实现呢?临时变量?那会去哪里?

再次重申,我是这方面的新手,感谢您的支持。

米海 TheActionGame.com

【问题讨论】:

    标签: ruby-on-rails forms variables temporary


    【解决方案1】:

    我很清楚您的操作代表什么,但即使您有一些基于时间的原则,也没有什么能阻止您之前保存操作(对于基于浏览器的应用程序,25 分钟是很多时间可能会发生很多不好的事情,例如刷新或连接失败)。

    我的建议是立即创建(保存)Action,从而让您的 Insight 链接到它。如果需要,我会在 Action 中添加一个“状态”列,其中包含“新”(基本状态)、“已确认”等内容。

    然后,您可以只处理“已确认”操作,并最终定期删除“新”操作(例如所有超过 30 分钟的操作,阈值为 25 分钟)。

    希望这是有道理的(无论如何,比 Rails 更多的设计)。

    【讨论】:

    • 谢谢 - 它正在删除与我的想法有点不同的新内容!
    【解决方案2】:

    您可以将一列作为数组添加到您的操作“insight_ids”中,并将其实现为 has_and_belongs_to_many。 然后当你有洞察力时,将洞察力的id记录在数组中

    【讨论】:

    • 感谢您抽出宝贵时间回答!我不确定这到底是如何工作的……如果我想这样做的话,我可能会找到链接,但是你能建议一个地方让我看看吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多