だから、私はプログラミングにかなり慣れていませんが、他のアプリケーションよりもレールに夢中になりました.Railscasts、rubyonrails.org、および他のいくつかの場所をナビゲートしようとしましたが、本当に迷っています.
コントローラー「weekly_review_controller.rb」には、次のものがあります。
def show
@weeklyReviewData = []
currentBusinessEmployees = current_user.thisUsersBusiness.employees.uniq
@weekStart = "Sun, 2 Dec 2012 00:00 -0500".to_datetime
@weekEnd = @weekStart+7.days-1.second
currentBusinessEmployees.each do |t|
# Vars
@employeeWeeklyData = []
# Names
@employeeWeeklyData << t.firstName + " " + t.lastName
# DailyData
dStop = t.dailyData.select("deliveryStop").where( "startTime > ? AND endTime < ?", @weekStart, @weekEnd )
dPkg = t.dailyData.select("deliveryPackage").where( "startTime > ? AND endTime < ?", @weekStart, @weekEnd )
pStop = t.dailyData.select("pickupStop").where( "startTime > ? AND endTime < ?", @weekStart, @weekEnd )
pPkg = t.dailyData.select("pickupPackage").where( "startTime > ? AND endTime < ?", @weekStart, @weekEnd )
iLS = t.dailyData.select("inboundLocalService").where( "startTime > ? AND endTime < ?", @weekStart, @weekEnd )
@employeeWeeklyData << dStop << dPkg << pStop << pPkg << iLS
@weeklyReviewData << @employeeWeeklyData
end
respond_to do |format|
format.html # index.html.haml
format.json { render json: @weeklyReviewData }
end
end
そのため、まだ URL を渡す方法がわかりparam
ません (したがって、URL に UTC タイムコード " /weekly_review/2012-12-02%2013:00:00%20UTC
" が渡されているにもかかわらず、開始日と終了日の静的な定義が必要です)。もう少し勉強してください。私が注目しているのは、非常に美しいビューを持っているので (質問して投稿します)、ビューで作成したテーブルに、収集したデータを入力したいと考えています。問題は、ビューに渡される変数が@weeklyReviewData
従業員名 ( t.firstName + " " + t.lastName
) を正常に入力しているのに、残りのデータがすべてActive:Relation:
ごちゃごちゃしていることです。私は見たり読んだりしましたが、これの目的は、データベースからのデータの一部をキャッシュに保存することであると確信しています。lazy lookups
(または、人々がそれを参照しているように見える)が、それもまた別の日に。名前と同じように、データベースからのデータが必要です。
では、以下のクエリの何が問題になっていますか?:
dStop = t.dailyData.select("deliveryStop").where( "startTime > ? AND endTime < ?", @weekStart, @weekEnd )
dPkg = t.dailyData.select("deliveryPackage").where( "startTime > ? AND endTime < ?", @weekStart, @weekEnd )
pStop = t.dailyData.select("pickupStop").where( "startTime > ? AND endTime < ?", @weekStart, @weekEnd )
pPkg = t.dailyData.select("pickupPackage").where( "startTime > ? AND endTime < ?", @weekStart, @weekEnd )
iLS = t.dailyData.select("inboundLocalService").where( "startTime > ? AND endTime < ?", @weekStart, @weekEnd )
トライアル/メモ:
Railsコンソールでクエリを使用して完了puts t.dailyData.select("deliveryStop").where( "startTime > ? AND endTime < ?", "Sun, 2 Dec 2012 00:00 -0500".to_datetime, "Sat, 9 Dec 2012 11:59 -0500".to_datetime ).to_sql
しました.SQLクエリはかなり正当なようですが、明らかに何かが欠けています.
SQL put は次のとおりです。SELECT deliveryStop FROM "daily_data" INNER JOIN "daily_data_employees" ON "daily_data"."id" = "daily_data_employees"."dailyDatum_id" WHERE "daily_data_employees"."employee_id" = 2 AND (startTime > '2012-12-02 05:00:00' AND endTime < '2012-12-09 16:59:00')