【问题标题】:Rails 4 form - creating record in one table and update record in another. How?Rails 4 表单 - 在一个表中创建记录并在另一个表中更新记录。如何?
【发布时间】:2013-12-21 08:05:33
【问题描述】:

如主题 - 怎么做?我在互联网上做了一些研究,但我发现的所有解决方案要么对我不起作用或不清楚。也许我只是可怜的搜索者。 反正就是这样:

我有两个表:事件和参与者。所有字段都是非常标准的目的,但我也有这个不太明显的字段:事件中的“captaken”和参与者中的“amount”。 基本思想是每个参与者指定参加活动的人数(例如,smbdy 将与妻子或 gf 一起来,因此“amout”为 2)。而且每个活动的参与者数量都是有限的——当前的席位数量存储在“captaken”字段中。

我有一个简单的脚手架表单用于添加参与者,目标是每次新参与者注册(创建)时根据“金额”制作指定事件增量的“captaken”字段。

我怎样才能做到这一点?

提前致谢。

【问题讨论】:

标签: ruby-on-rails


【解决方案1】:

这是在您的参与者模型中执行此操作的最简单方法:

#Specify the relationship, model should have an event_id field.

belongs_to :event

#This is the hook to tell the system to update the event
#after creation.

after_create :update_event_captaken


#Method for updating the event

def update_event_captaken
  self.event.captaken += self.amount
  self.event.save
end

【讨论】:

  • 虽然我的问题已经解决了,但您的示例向我展示了为什么我自己尝试完成它的尝试失败了。我从来没有做过.save!谢谢你:)
【解决方案2】:

在参与者模型中使用 after_create 回调。 这将作为每当在参与者中创建新记录时更新另一个表中的值。

【讨论】:

  • 感谢您的建议。我是否需要事件表一侧的任何保证或设置才能使其正常工作?
  • 不只是添加 after_create : update_event 。并在此 update_event 方法中编写代码来更新事件值。参与者和事件之间有什么关联?
  • 参与者所属事件
  • 其实在模型回调中。它自己应用 self 。如果我正在写事件。 Ror 仅将其理解为 self.event。因为我们有这样的关联。
  • 太棒了。我讨厌在没有理解的情况下做事。感谢您的解释、耐心和您的时间。谢谢
猜你喜欢
  • 2023-03-25
  • 1970-01-01
  • 1970-01-01
  • 2019-08-17
  • 1970-01-01
  • 1970-01-01
  • 2021-10-23
  • 2018-08-09
  • 1970-01-01
相关资源
最近更新 更多