Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 需要通过另一个表查找记录的Rails where子句_Ruby On Rails_Activerecord_Associations - Fatal编程技术网

Ruby on rails 需要通过另一个表查找记录的Rails where子句

Ruby on rails 需要通过另一个表查找记录的Rails where子句,ruby-on-rails,activerecord,associations,Ruby On Rails,Activerecord,Associations,我有四张桌子 品牌 船 马达 船(马达)(套装) 一个品牌有许多马达 电动机属于某一品牌 船-马达组件属于船和马达 一艘船上有许多船用发动机 我需要做两件事 列出每个船用电机包的品牌 列出与每个品牌相关的boat_motor_包装 比如说, 我有一条船 我有两个品牌——“evinrude”和“mercury” 我有4台电机,每个品牌2台 下面是我希望它在视图模板中的外观 埃文鲁德 50马力 60马力 水银 55马力 65马力 这是我的控制器动作 def show @boat =

我有四张桌子

  • 品牌
  • 马达
  • 船(马达)(套装)
一个品牌有许多马达

电动机属于某一品牌

船-马达组件属于船和马达

一艘船上有许多船用发动机

我需要做两件事

  • 列出每个船用电机包的品牌
  • 列出与每个品牌相关的boat_motor_包装
  • 比如说,

    我有一条船

    我有两个品牌——“evinrude”和“mercury”

    我有4台电机,每个品牌2台

    下面是我希望它在视图模板中的外观

    埃文鲁德

    • 50马力
    • 60马力
    水银

    • 55马力
    • 65马力
    这是我的控制器动作

    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相关的马达包

    我试着做这样的事情:

    -@boat.motor_packages(brand).each do |motor_package|
    
    def motor_packages(brand)
      BoatMotorPackage.where(["boat => ? and motor.brand => ?", self, brand])
    end
    
    并在Boat类中创建一个如下所示的方法:

    -@boat.motor_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
                                    -@boat.motor_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}"
    

    如果您遵循Rails惯例,那么保存
    马达
    记录的表将被称为
    马达
    (复数),而不是
    马达
    (单数)