Ruby on rails Rails:同时处理(更新)2个不同的控制器

Ruby on rails Rails:同时处理(更新)2个不同的控制器,ruby-on-rails,ruby-on-rails-4,model,updates,Ruby On Rails,Ruby On Rails 4,Model,Updates,我想实现一个简单的折扣券。我有一个保存有效优惠券的模型(除了一些其他东西之外)和一个存储产品特性的产品模型(名称、价格等) 我有一个简单的表单,允许用户输入优惠券。我应该检查它是否有效(我为它定义了一个范围)。如果输入的优惠券有效,我必须更新上述两个表。在第一个表中,我必须将优惠券更改为“已使用”,在第二个表中,我应该用新值更新价格。我想在用户在表单中输入值时执行这些操作 你对这两种方法有什么建议和解决方案?由于这两个操作与两个不同的模型和控制器相关,因此我无法在一个控制器中访问它们。调用方法执

我想实现一个简单的折扣券。我有一个保存有效优惠券的模型(除了一些其他东西之外)和一个存储产品特性的产品模型(名称、价格等)

我有一个简单的表单,允许用户输入优惠券。我应该检查它是否有效(我为它定义了一个范围)。如果输入的优惠券有效,我必须更新上述两个表。在第一个表中,我必须将优惠券更改为“已使用”,在第二个表中,我应该用新值更新价格。我想在用户在表单中输入值时执行这些操作


你对这两种方法有什么建议和解决方案?由于这两个操作与两个不同的模型和控制器相关,因此我无法在一个控制器中访问它们。调用方法执行这些操作的最佳方法是什么?你能给我一个清楚的解释吗

您可以在任一控制器中访问这两个模型,但是要以“rails方式”执行此操作,您应该将此逻辑放入您的模型中。我会在优惠券模型中添加一个before_update回调,用于检查优惠券是否如您所述被更改为“used”。如果是这样,您可以在产品表中更新其“价格”。关键的概念是,您可以从任何地方调用所有模型,并且它们不限于各自的控制器。

您可以访问任一控制器中的两个模型,但是要以“rails方式”执行此操作,您应该将此逻辑放在您的模型中。我会在优惠券模型中添加一个before_update回调,用于检查优惠券是否如您所述被更改为“used”。如果是这样,您可以在产品表中更新其“价格”。关键的概念是,您可以从任何地方调用所有模型,而不仅仅限于各自的控制器。

我使用表单备份对象来处理这类内容:@RujyNexBe不是解决方案,而是值得考虑的。我使用表单支持对象来处理这种类型的东西:RuyyNeBebe不是解决方案,而是值得考虑的。我曾想过使用活动记录回调,但由于一个问题,我忽略了它。如何在优惠券模型中使用before_update回调来更新产品模型的属性?在模型中调用控制器的操作是不可能的,也不是“rails方式”。您没有在模型中调用控制器操作。当您在优惠券模型中更改优惠券实例的状态时(通过更新,该更新不是更新控制器操作,而是模型中的更新方法!),然后您应该查找与其关联的相关产品(仍然在优惠券模型中,使用更新优惠券时运行的回调方法)并根据需要改变价格。对我来说,这似乎是一种合乎逻辑的方式!我曾想过使用活动记录回调,但由于一个问题,我忽略了它。如何在优惠券模型中使用before_update回调来更新产品模型的属性?在模型中调用控制器的操作是不可能的,也不是“rails方式”。您没有在模型中调用控制器操作。当您在优惠券模型中更改优惠券实例的状态时(通过更新,该更新不是更新控制器操作,而是模型中的更新方法!),然后您应该查找与其关联的相关产品(仍然在优惠券模型中,使用更新优惠券时运行的回调方法)并根据需要改变价格。