Rails 自定义模型函数

Ant*_*ton 1 ruby sql model ruby-on-rails

我正在上数据库课程,讲师希望我们开发电子商务应用程序。她说我们可以使用我们喜欢的任何框架,现在我们已经过了学期的一半,她认为 Rails 做的太多,并希望我明确地编写我的 SQL 查询。

所以,我想做的是编写自己的函数并将它们添加到模型中,以基本上复制现有的功能(但使用我自己编写的 SQL)。

那么问题就变成了:

  1. 如何在模型内执行手动创建的查询?
  2. 如何将结果填充到一个空对象中,然后我可以返回并在视图中使用它?

另外,我知道这是多么糟糕的做法,我只是不想在这一点上从头开始使用 PHP。

Ale*_*kin 5

我认为,您应该知道 2-3 种真正必要的方法来使用它。(假设我们至少有 2 个模型,订单和用户(订单的客户))例如,只是为了在您的数据库上运行查询,请使用以下命令:

Order.connection.execute("DELETE FROM orders WHERE id = '2')
Run Code Online (Sandbox Code Playgroud)

要从数据库中获取对象数量,最好的方法是使用方法“count_by_sql”,它是可扩展的。我在我的项目中使用它,其中表有超过 50 万条记录。计算应用程序的所有工作都交给了数据库,它比应用程序效率高得多。

Order.count_by_sql("SELECT COUNT(DISTINCT o.user_id) FROM orders o")
Run Code Online (Sandbox Code Playgroud)

此查询获取有订单的所有 uniq 用户的数量。我们可以“JOIN ON”表,使用“ORDER BY”对结果进行排序并对结果进行分组。

以及最常用的方法:find_by_sql

Order.find_by_sql("SELECT * FROM orders")
Run Code Online (Sandbox Code Playgroud)

它返回给你一个带有 ruby​​ 对象的数组。