簡體   English   中英

無法找出has_many / belongs_to RAILS 4

[英]Can't figure out has_many/belongs_to RAILS 4

我的模型是:

class CarBrand < ActiveRecord::Base
        has_many :car_models
    end

class CarModel < ActiveRecord::Base
    belongs_to :car_brand
end

我的遷移是

    class CreateCarBrands < ActiveRecord::Migration
  def up
    create_table :car_brands do |t|
      t.string "brand", :limit => 20    
      t.timestamps null: false
    end
  end

  def down
    drop_table :car_brands
  end
end

    class CreateCarModels < ActiveRecord::Migration
   def up
    create_table :car_models do |t|
      t.references :car_brand
      t.string "model", :limit => 20      
      t.timestamps null: false
    end
    add_index :car_models, :car_brand_id
  end
  def down 
    drop_table :car_models
  end
end

而且我想根據特定的汽車品牌獲得汽車型號,在數據庫中我有兩個記錄,但是當我在控制台中鍵入時會出現錯誤

somecar = CarBrand.where(:brand => 'Toyota')
somecar.car_models

因此它不會返回豐田的型號,但我將其保存在數據庫中!!!

somecar = CarBrand.where(:brand => 'Toyota')返回活動記錄關系#<ActiveRecord::Relation [#<.....要點是它是一個集合。 您必須遍歷集合中的每個項目。

some_cars = CarBrand.where(:brand => 'Toyota') some_cars.each do |car| puts car.car_model end

或在第一項上some_cars.first.car_model

注意,我將some_car更改為some_cars,變量的名稱確實很重要,但是更容易看出它是一個集合。 請注意,我在每個項目上都調用了.car_model (而不是car_models ),這確實很重要。

這樣嘗試:-

somecar = CarBrand.where(:brand => 'Toyota')
somecar.first.car_models

CarBrand.where(:brand => 'Toyota')返回一個數組。

要么

這樣嘗試:-

somecar = CarBrand.find_by brand: 'Toyota'
somecar.car_models

CarBrand.find_by brand: 'Toyota'將獲取第一個匹配記錄。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM