2012-09-16 5 views
8

workorderブランチが数字に等しいシリアル番号を持たないアセットのみを返すクエリを実行したい。Rails 3:親モデル属性が検索キーと等しいすべての子レコードを取得する

class Workorder < ActiveRecord::Base 
    belongs_to :user 
    has_many :assets 

    scope :current_branch, where("branch=350").order("wo_date ASC") 
end 

class Asset < ActiveRecord::Base 
    belongs_to :workorder 

    scope :needs_serial, :conditions => {:serial => ""} 
end 

class AssetsController < ApplicationController 
    def index 
     @assets_needing_serial=??? 
    end 
end 

したがって、assets.workorder.branch = "350"のハッシュが必要です。私はループを作成し、その方法でハッシュを作成することができると思うが、私はこれをクエリで行うことができますか?私はこれにスコープを使用しようとしていますか?

**アップデート

これは私が使い終わったものです。素晴らしい仕事をした。

@assets = Asset.joins(:workorder).where('workorders.branch=350').order('workorders.wo_date ASC') 

答えて

17

あなたがしたいと思うのクエリは、あなたがこのようにスコープを作ることができます

Asset.joins(:workorder).where('workorders.branch = 325') 

です:あなたはworkordersをループさせるつもりなら

scope :with_workorder_branch, lambda { |branch| joins(:workorder).where('workorders.branch = ?', branch) } 

、あなたは、この熱心な人がそれらを読み込むときに、包含に結合を変更する必要があります。

クエリへのレールガイドは、この種のもののためにhttp://guides.rubyonrails.org/active_record_querying.html

+0

おかげで非常に便利です!完璧に働いた –

+0

それを聞いてうれしい。あなたは左のチェックマークをクリックして答えを受け入れるべきです... – Edward

関連する問題