1

我对 Rails 还很陌生,目前我正试图围绕框架的模型/数据库方面进行思考。尽管如此,我在理解模型、数据库模式和视图/控制器之间的连接时遇到了一些麻烦。

例如,假设我有一个 Articles 模型,而 Articles 模型 has_many authors。如何用实际的文章/内容填充 Articles 模型,并用一组相应的 Authors 填充 Authors 模型?

换句话说:如果我有

articles = Articles.search(params[:search])

在我的控制器中,Articles 对象如何知道搜索我在视图中编写的实际文章/内容?我无法理解这种联系。

我希望这是有道理的。

任何见解将不胜感激!谢谢。

4

1 回答 1

3

您的问题中隐藏了许多问题,因此这里有一些答案:

  • Article是一个类(注意,它是单数),它提供了对文章数据进行操作的类方法。这些类方法可以是:Article.newArticle.find(这些方法由ActiveRecord定义)。您还可以定义自己的类方法,例如 Article.search,它可能会为您提供一系列 Article 实例:articles.

  • articles仅在控制器操作的本地范围内可见。如果您使用@articles您将变量提升为实例变量,则该变量可用于渲染视图。(视图渲染器可以访问控制器实例变量)

  • 为了将模型中的数据存储在数据库中,您可以使用Article实例从 ActiveRecord 继承的方法,例如article.save

  • 因此,将数据从视图导入数据库的整个过程是:@article = Article.new' defines an empty model that can be loaded from a form in a view. If the form is submitted,@article = Article.create(params[:article]) would save the data into the database. And@articles = Article.search(params[:search])` 然后会返回一个数组可以在视图中呈现的对象。

一些参考资料:

于 2013-05-20T08:41:50.117 回答