所以,我对编程很新,但是已经爱上了rails而不是其他应用程序,但我已经尝试过导航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
传递(因此开始日期和结束日期的静态定义,即使我确实传递了UTC时间码的URL“{{ 1}}“),但是当我学到更多东西时,那将会到来。我正在关注的是,因为我有一个非常漂亮的视图,(问及我将发布),我想填充我在视图中制作的表格,以及我收集的数据。问题是传递给视图的变量/weekly_review/2012-12-02%2013:00:00%20UTC
正在填充员工姓名(@weeklyReviewData
),但其余数据都是t.firstName + " " + t.lastName
混乱的。我已经观看/阅读,并且我非常确定这个目的是在缓存中存储一些数据,这些数据由Active:Relation:
构成数据库(或者人们似乎将其引用到那里),但是是另一天。我只想要数据库中的数据就像名字一样。
以下我的查询有什么问题?:
lazy lookups
试验/注释:
我甚至在rails控制台中使用了查询并完成了 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 )
,并且SQL查询似乎非常合法,但显然我遗漏了一些东西。
SQL puts是: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
答案 0 :(得分:1)
尝试明确告诉ActiveRecord
获取一条记录:
dStop = t.dailyData.select("deliveryStop").where( "startTime > ? AND endTime < ?", @weekStart, @weekEnd ).first
答案 1 :(得分:1)
很有可能,您想要/需要的所有数据都出现在ActiveRecord::Relation
中。 ActiveRecord::Relation
可以(大部分)被视为一个数组,因此您可以迭代它以获取数据。如果您愿意,可以使用to_a
方法将其显式转换为数组。如果你只想要一场比赛,Tudo Constantin的回答很有用。