我对Rails很新,我现在迷路了。
我正在关注blog tutorial,利用这些信息来创建一个类似的不同应用程序。
嗯,我想要的(用SQL语言)是:
select planned from hourplans where area_id = 2 and time = '9:00:00'
我的应用程序中有4个模型(基本上是博客教程中的应用程序在同一个网站上放两次):
制作(可能有多次停机) [生产] - 1 ------- N-- [停机时间]
class Production < ActiveRecord::Base
has_many :downtimes, dependent: :destroy
validates :items, presence: true
end
生产具有属性:日期(日期),时间(时间),区域(文本)和项目(整数)
class Downtime < ActiveRecord::Base
belongs_to :production
end
停机时间具有属性用户名(文本),类别(文本),机器(文本),站(文本),分钟(整数)和详细信息(文本)
区域(可以有多个小时计划) [区域] - 1 ------- N-- [小时计划]
class Area < ActiveRecord::Base
has_many :hourplans, dependent: :destroy
validates :title, presence: true
end
区域具有属性标题(文本),文本(文本)
class Hourplan < ActiveRecord::Base
belongs_to :area
end
Hourplan具有属性时间(时间),周期(十进制),分钟(整数)和计划(整数)
因此,例如,从9:00到10:00有一个生产对象,生产有一个名为&#34; area&#34;具有值&#39; area2&#39;。
还有一个Area的对象,标题为&#39; Area2&#39;这与一个对象Hourplan相关,该对象具有一个名为&#39;计划&#39;使用从9:00到10:00计划的项目(如600)的值
如何从9:00到10:00将这些数据提取到制作的节目页面?
我无法转让
我尝试过类似的事情:
<% area2.hourplans.where("time = 09:00").select(:planned) %>
但那没用。
然后我想我必须首先将模型的对象设置为变量,所以我尝试了:
<% area = Area.find_by title: @production.area %>
但我只是不明白。我不知道这是否有效。但是我现在怎样才能进入小时计划?这些与区域有关
我也尝试过:
<%= Hourplan.select("planned").where("time = 9:00 AND area_id = 2") %>
那只是给了我:
#<Hourplan::ActiveRecord_Relation:0x50c23e0>
我不知道这意味着什么,我以为我会从SQL表中获得一个值,比如&#39; 600&#39;
我希望我让自己清楚易懂。如果您有任何疑问,请告诉我。我非常感谢你的帮助,我正在浏览官方指南,但我无法找到我想要的东西。
答案 0 :(得分:0)
您可以尝试替换
<%= Hourplan.select("planned").where("time = 9:00 AND area_id = 2") %>
通过
<%= Hourplan.where("time = '9:00' AND area_id = 2").first.planned %>
实际上,where
方法返回一个关系,它代表(粗略地)SQL查询的结果。但是您知道SQL查询可能会也可能不会返回单行。通常,返回了几行。这就是为什么你要添加first
,只获得第一个Hourplan对象。