【发布时间】:2016-11-09 08:53:58
【问题描述】:
我在 3 个不同的模型之间有一个直接的关联:
class Claim < ApplicationRecord
has_one :private_car, class_name: 'Car'
has_one :company_car, class_name: 'Car'
has_one :user, through: :private_car
end
class Car < ApplicationRecord
belongs_to :claim
belongs_to :user
end
class User < ApplicationRecord
has_many :cars
end
相应的表定义了以下外键:
Claim => ['private_car_id','company_car_id']
Car => ['user_id','claim_id']
User => none
控制台输出如下:
2.3.1 :007 > Claim.first.private_car
Case Load (0.4ms) SELECT "cases".* FROM "claims" WHERE "claims"."deleted_at" IS NULL ORDER BY "claims"."id" ASC LIMIT $1 [["LIMIT", 1]]
Car Load (0.2ms) SELECT "cars".* FROM "cars" WHERE "cars"."deleted_at" IS NULL AND "cars"."claim_id" = $1 LIMIT $2 [["claim_id", 1], ["LIMIT", 1]]
=> nil
2.3.1 :008 > Claim.first.private_car_id
Claim Load (0.6ms) SELECT "claims".* FROM "claims" WHERE "claims"."deleted_at" IS NULL ORDER BY "claims"."id" ASC LIMIT $1 [["LIMIT", 1]]
=> 1
2.3.1 :009 > Claim.first.user
Claim Load (0.3ms) SELECT "claims".* FROM "claims" WHERE "claims"."deleted_at" IS NULL ORDER BY "claims"."id" ASC LIMIT $1 [["LIMIT", 1]]
User Load (0.5ms) SELECT "users".* FROM "users" INNER JOIN "cars" ON "users"."id" = "cars"."user_id" WHERE "users"."deleted_at" IS NULL AND "cars"."deleted_at" IS NULL AND "cars"."claim_id" = $1 LIMIT $2 [["claim_id", 1], ["LIMIT", 1]]
=> nil
知道为什么关联被破坏了吗?
【问题讨论】:
标签: ruby-on-rails activerecord heroku ruby-on-rails-5