1

現在行っている予約ごとではなく、ユーザーごとsumの残業時間を取得しようとしています: Imgur

コントローラ

def index
    @users = User.all
    @hospital_bookings = HospitalBooking.scoped
  end
end

Index.html.erb

<%@users.each do |user|%>
  <% user.hospital_bookings.each do |hospital_booking| %>
   {
      name:'<%= hospital_booking.user.try(:name)%>',
      data:[<%= @hospital_bookings.where(:user_id => 
     hospital_booking.user.id).all.sum(&:overtime)%>]
    },
  <% end %>
 <% end %>

モデル

#User.rb
has_many :hospital_bookings

#hospital_booking
belongs_to :user

スキーマ.rb

create_table "hospital_bookings", :force => true do |t|
    t.string   "booking_reference"
    t.datetime "created_at",                                       :null => false
    t.datetime "updated_at",                                       :null => false
    t.integer  "hospital_id"
    t.integer  "user_id"
    t.date     "day"
    t.string   "shift_type"
    t.decimal  "overtime",          :precision => 10, :scale => 0
  end

以下を試しましたが、どちらもうまくいかないようです。

**Attempt1**
<%= @hospital_bookings.where(:user_id => user.id, :hospital_booking =>
 hospital_id ).all.sum(&:overtime)%>

**Attempt2**
<%= HospitalBooking.where(user_id: user.id, 
 hospital_id: hospital.id).sum(:overtime) %> 
4

1 に答える 1

1

特定のユーザーのすべての残業の合計を求めているようですuser

user.hospital_bookings.sum(:overtime)

病院限定

user.hospital_bookings.where(:hospital_id => hospital.id).sum(:overtime)

(ただし、これはAttempt2と同じである必要があります)

コメントの後に編集:
2 回目の反復で重複が作成されました。ユーザーのみを反復処理して残業時間を合計すると、目的の出力が得られるはずです。

<% @users.each do |user|%>
   {
      name:'<%= user.name %>',
      data:[<%= user.hospital_bookings.sum(&:overtime)%>]
    },
 <% end %>
于 2013-03-02T14:11:16.173 に答える