2014-10-29 76 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(单数)。

相关问题