簡體   English   中英

從Rails中的模型實例獲取數據

[英]Getting data from an instance of a model in Rails

我對Rails很陌生,現在迷路了。 我一直在關注博客教程 ,利用這些信息來創建另一個類似的應用程序。

好吧,我想要的(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

因此,例如存在一個從9:00到10:00的生產對象,生產具有一個名為“ area”的字段,其值是“ area2”。
並且還有一個名為“ Area2”的Area對象,該對象與對象Hourplan有關,該對象的Hourplan具有一個稱為“ planned”的字段,該字段的值是從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表中得到一個值,例如'600'

我希望我能使自己清晰易懂。 如果您有任何疑問,請告訴我。 我很感謝您的幫助,我正在瀏覽官方指南,但找不到真正想要的東西。

您可以嘗試更換

<%= 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對象的原因。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM