想不通 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
所以它没有 returns 我的丰田车型,但我在数据库中有它们!!!
这样试试:-
somecar = CarBrand.where(:brand => 'Toyota')
somecar.first.car_models
作为 CarBrand.where(:brand => 'Toyota')
returns 数组。
或
这样试试:-
somecar = CarBrand.find_by brand: 'Toyota'
somecar.car_models
CarBrand.find_by brand: 'Toyota'
将获取第一个匹配记录。
somecar = CarBrand.where(:brand => 'Toyota')
returns 一个活动记录关系 #<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
),这真的很重要。
我的模型是:
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
所以它没有 returns 我的丰田车型,但我在数据库中有它们!!!
这样试试:-
somecar = CarBrand.where(:brand => 'Toyota')
somecar.first.car_models
作为 CarBrand.where(:brand => 'Toyota')
returns 数组。
或
这样试试:-
somecar = CarBrand.find_by brand: 'Toyota'
somecar.car_models
CarBrand.find_by brand: 'Toyota'
将获取第一个匹配记录。
somecar = CarBrand.where(:brand => 'Toyota')
returns 一个活动记录关系 #<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
),这真的很重要。