私は、ユーザーにタイム・ログ(日付を持つ)を持つデータ・モデルを持っています。Rails 3.0で複雑なデータを照会する
私は、データテーブルを吐き出させ、タイムロッグを持つ各ユーザをリストアップし、クエリされた期間に毎日記録された時間の合計を列挙する方法で自分のDBをクエリしようとしていますエッセンスを毎週のタイムシートに)。
私はこれを行う方法を考え出すことに問題があります。何か案は?
私は、ユーザーにタイム・ログ(日付を持つ)を持つデータ・モデルを持っています。Rails 3.0で複雑なデータを照会する
私は、データテーブルを吐き出させ、タイムロッグを持つ各ユーザをリストアップし、クエリされた期間に毎日記録された時間の合計を列挙する方法で自分のDBをクエリしようとしていますエッセンスを毎週のタイムシートに)。
私はこれを行う方法を考え出すことに問題があります。何か案は?
詳細の多くは、データモデルに依存するが、短い答えは、最初の関係を作成することです:あなたはそれを行うたら
class User < ActiveRecord::Base
has_many :user_timelogs
has_many :timelogs, :through => :user_timelogs
end
class UserTimelog < ActiveRecord::Base
belongs_to :user
belongs_to :timelog
end
class Timelog < ActiveRecord::Base
has_many :user_timelogs
has_many :users, :through => :user_timelogs
end
、あなたがユーザーのためにtimelogsを照会することができます
User.all.timelogs
追加のクエリ(特定の日付、合計など)を追加できます。 Railsは、そのクエリを絞り込む方法についての詳細はガイドチェックアウト:
回を想定し、これを試してみてください各timelog行のための「期間」欄に秒数として格納されます。
Timelog.where(...). # your time period
joins(:users).
group('users.id').
sum('duration')
これは、ユーザーIDをキーとして、期間の合計を値として持つハッシュを提供します。
現在設定しているもの(モデルなど)に関する詳細情報を追加してください。 – jmccartie
前述のとおりです。 2つのモデル。ユーザーとタイムロッグユーザーはタイムログを持っています –