2014-10-29 75 views
0

我有4個表Rails的where子句需要通過其他表查找記錄

  • 品牌
  • 電機
  • boat_motor_packages

品牌的has_many電機

電機屬於品牌

一個boat_motor_package belongs_to的一條船,機動

船的has_many boat_motor_packages

我需要做兩件事情

  1. 列表中的品牌每個boat_motor_package
  2. 列表與相關的boat_motor_packages每個品牌

例如,

我有1船

我有2個品牌 - 「埃文魯德」 和 「汞」

我有4個發動機,2各品牌

這下我多麼希望它看起來在我看來模板

埃文魯德

  • 50HP
  • 60HP

  • 55HP
  • 65hp

這裏是我的控制器操作

def show 
    @boat = Boat.find(params[:id]) 
    packages = BoatMotorPackage.where(boat: @boat).all 

    @package_motor_brands = packages.map { |p| p.motor.brand } 
end 

@package_motor_brands是給我所有的品牌我需要

現在我需要去與該艇和

我試圖做財產以後這樣的motor.brand相關的電機包:

[email protected]_packages(brand).each do |motor_package| 

,並創建一個方法看起來像這樣的船類:

def motor_packages(brand) 
    BoatMotorPackage.where(["boat => ? and motor.brand => ?", self, brand]) 
end 

但這不起作用。我收到一個錯誤消息,指出motor.brand列不存在。這是事實,因爲它在電動機桌上是實際的。有誰知道正確的方法來做到這一點?

這是我的看法櫃面,幫助

- @package_motor_brands.each do |brand| 
           .col-xs-6.motor-group-container 
           %h5= brand.name 
           [email protected]_packages(brand).each do |motor_package| 
           .row 
            .col-xs-12.motor-group 
            %label.motor-group-name 
             %input#motorPackageRadios1{:name => "motorPackages", :type => "radio", :value => "#{motor_package.id}"}/ 
             ="#{motor_package.motor.hp.to_s}HP #{motor_package.motor.motor_type}" 
            .motor-group-price="#{motor_package.price_in_cents}" 

回答

-1

如果您遵循Rails的約定,那握着你Motor記錄的表將被稱爲motors(複數),而不是motor(單數)。

相關問題