【问题标题】:Rails how works ApplicationController [closed]Rails如何工作ApplicationController [关闭]
【发布时间】:2016-02-17 23:50:32
【问题描述】:

当我编写控制器类时,可以使用以下方法:

@article.update(article_params)

方法update来自ActiveRecord::Base类: http://api.rubyonrails.org/v2.3/classes/ActiveRecord/Base.html#M001966

我的问题:

  1. 如何使用不继承自 ActiveRecord::Base 的 Controller 类的 update 方法?看起来ApplicationController 仅继承自ActionController::Base

  2. 是否有任何资源可供阅读?

谢谢你的帮助,干杯

【问题讨论】:

  • 你把苹果和梨混在一起,这个问题根本没有意义。 ActiveRecord::Base 是模型,ActionController::Base 是控制器。 @article.update(article_params) 在模型实例上调用 .update,与 ApplicationController 无关。您可能想先阅读:guides.rubyonrails.org/getting_started.html
  • 老实说,ActiveRecord::Base 仅用于数据库中的模型。关于ActionControllerActiveRecord 如何工作的大量文档。我也认为这不是正确的问题,因为有很多人一遍又一遍地问同样的问题。 @max 说了什么,请阅读 Rails 本身的文档。

标签: ruby-on-rails ruby activerecord controller applicationcontroller


【解决方案1】:

Rails 遵循 MVC 架构。在该架构中,您的模型与数据库交互,而您的控制器与传入的请求交互(通常通过编排一些模型,然后将它们传递给一些呈现内容的视图)。 Rails 通过继承实现重用,因此您不能(也可能不想)混合关注点

我建议查看官方 Rails 指南。我认为这是业内最好的书面文档:

http://guides.rubyonrails.org/

【讨论】:

  • 嗨,MVC 说的很清楚了,意思是,怎么可能在控制器中使用 update() 方法,因为它是一个有作用域的类。而且我不会混淆所有内容,方法是在控制器中使用 -> (guides.rubyonrails.org/action_controller_overview.html) .... 我的问题是,它如何在 Rails 中工作。怎么可能在控制器中使用该方法,从何而来。
  • 您可以在控制器方法中执行类似MyModel.where(id: params[:id]).update(name: "hello") 的操作。您创建一个控制器方法,然后控制器方法委托给模型类
猜你喜欢
  • 2011-05-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
  • 2012-05-08
  • 2012-07-04
  • 2015-12-05
相关资源
最近更新 更多