2017-06-30 29 views
1

我有一個滑軌模型Contractors,它與serviceshas_many關係。Rails只從db中找到相關值

我有另一個模型Companies和公司可以選擇服務和選定的服務被添加到在companies表中的數組services

我試圖讓一個company特定contractor選擇的所有services的列表,我做了以下內容:

@services = @contractors.services.find(@company.services) 

但如果services列表包含即使它拋出一個錯誤單一服務不是由承包商提供的。有沒有辦法讓我忽略所有services,這些都不是由特定承包商製作的?

+0

您是否在尋找一家承包商,該承包商擁有與公司正在尋找的一些服務相匹配的服務? – bkunzi01

+0

我基本上有一個承包商頁面,我想在其中顯示承包商服務的列表,這些服務也位於特定公司的「服務」陣列中 – anonn023432

回答

1

你不能簡單地使用where子句嗎?我猜測@contractors實際上是一個單獨的承包商活動記錄對象。

@services = @contractors.services.where(id: @company.services)

1

確保在表Services我們有contractor_idcompany_id

檢查這些表之間的關係。

而且它很簡單,只需要

@services = @company.services.where(contractor_id: xxx) 

一個company的has_many services,一個service belongs_to的contractor,當你想獲得多條記錄

1
  1. 試試這個,你必須使用.where

    @services = @contractors.services.find(@company.services.map(&:id))

的代碼此版本給異常如果服務不可用成@contractors.services

  • 嘗試這一個無例外:

    @services = @contractors.services.find_by_id(@company.services.map(&:id))