0

我的控制器中有从另一个 Rails 应用程序和数据库接收的数据(必须在控制器中)一些代码示例的问题)

我的问题是我无法直接从模型中的控制器中获取这些数据,因为这违反了 MVC。

我的问题是我将如何检查模型中的控制器数据?

  • 我是否必须在视图中加载此数据/真 - 假响应,然后将其链接到我的模型?(我真的不希望它显示在视图中,并且还没有完全弄清楚如何做到这一点)

  • 我是否需要将此数据传递给路由example/data.json,然后在我的模型中检查它?(我还没有弄清楚如何在我的模型中使用这个 data.json)

任何朝着正确方向的帮助/转向都会非常有用。(我也不能用宝石来做到这一点

4

2 回答 2

1

首先,请确保您不会通过模型本身不包含的数据来验证模型。模型应该验证它的当前状态,而不是它进入这个状态的方式(例如,哪个用户将模型置于这个状态)。

其次,你不应该在模型中使用控制器方法。如果控制器包含一些业务逻辑,则将该逻辑提取到第三个类中,控制器和模型都将使用该类。

此外,您在控制器中有数据并且可以访问模型,对吗?因此,如果您在控制器方法中,例如在过滤器或操作之前,您可以获取该数据并将其传递给模型,如下所示:

def controller method
  hey_model.is_this_correct?(data)
end

如果您说必须在控制器响应请求检查该数据(例如,在下一个向导步骤,即在下一个请求时),那么您肯定必须在请求之间的某个位置存储该值。

这正是无状态 HTTP 的重点。在您明确执行此操作之前,不会在请求之间保存任何数据。您可以将您的值存储在 cookie 或数据库中。

于 2013-01-15T01:47:27.703 回答
0

我知道这个问题是不久前的问题,但对于那些仍在搜索的人,我找到了确切的答案,即如何将信息从控制器传递到模型。

有了这条线,一切都解决了

var = request.env['target_model'].sudo().function_in_your_model(data) 

var是一个变量,以防您需要在控制器中处理该数据,target_model是您要发送数据的模型,function_in_your_model是您要处理模型中已有数据的函数,并且在此函数中发送数据你需要的。

于 2020-03-17T01:49:58.920 回答