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 =
- 品牌
- 船
- 马达
- 船(马达)(套装)
- 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惯例,那么保存
马达
记录的表将被称为马达
(复数),而不是马达
(单数)