gpt4 book ai didi

postgresql - 在 Rails 中对库存进行分组和计数

转载 作者:行者123 更新时间:2023-11-29 13:39:16 25 4
gpt4 key购买 nike

我正在用 Rails 创建一个电影租赁应用程序。我正在尝试创建一个 View 来显示数据库中的每部电影,以及手头的可用副本数。

我有一个 postgresql 数据库,它有一个包含以下列的 list 表:inventory_id、film_id、checkout_status。它有这样的数据:

inventory_id 1,film_id 1,可用
inventory_id 2, film_id 1, available
inventory_id 3, film_id 1, available
inventory_id 4, film_id 2, available
inventory_id 5, film_id 2, available
inventory_id 6, film_id 2, available
inventory_id 7,film_id 2,可用

我的模型设置为胶片有_很多库存,而库存属于_胶片。

我有一个库存 Controller ,它将我的索引操作定义为:

    def index
@inventory = Inventory.all
end

在我看来,我正在尝试遍历我的库存表(也从电影表访问信息)以显示电影的标题、描述和可用拷贝数。这是我到目前为止所得到的:

    <% @inventory.each do |i|
<%= i.film.title %>
<%= i.film.description %>
<% end %>

它给了我一个这样的电影列表:

电影1,描述1
电影 1,描述 1
电影 1,描述 1
电影2,描述2
电影2,描述2
电影2,描述2
电影 2,描述 2

我要做的是这样的:

电影 1,描述 1,计数:3
电影 2,描述 2,计数:4

我尝试了很多方法,但没有任何效果,我现在不知所措。有人可以帮忙吗?

最佳答案

试试这个:

def index
@inventory = Inventory.select('distinct(film)')
end

这将只带来实际在 list 上的电影,并且每部电影只有一条记录。

和:

<% @inventory.each do |i|
<%= i.film.title %>
<%= i.film.description %>
<%= Inventory.where(film_id: i.film_id).count %>
<% end %>

可以改进计数,也许在关联上使用计数器缓存,就像这里建议的那样:Rails order by results count of has_many association

关于postgresql - 在 Rails 中对库存进行分组和计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57855738/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com