Ruby on rails ActiveRecord关联中有奇怪的混乱吗?
有两种型号Ruby on rails ActiveRecord关联中有奇怪的混乱吗?,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,有两种型号A,B,如下所示: class A < ActiveRecord::Base has_one :b,:foreign_key => :sid end class B < ActiveRecord::Base belongs_to :a,:foreign_key => :sid end A.frist.b 我出错了 SELECT `b_model_name`.* FROM `b_model_name` WHER
A
,B
,如下所示:
class A < ActiveRecord::Base
has_one :b,:foreign_key => :sid
end
class B < ActiveRecord::Base
belongs_to :a,:foreign_key => :sid
end
A.frist.b
我出错了
SELECT `b_model_name`.* FROM `b_model_name` WHERE `b_model_name`.`sid` = 1 LIMIT 1
注意在数据库模型B
中先有sid
我想知道为什么查询会这样
SELECT `b_model_name`.* FROM `b_model_name` WHERE `b_model_name`.`sid` = 1 LIMIT 1
为什么不:
SELECT `b_model_name`.* FROM `b_model_name` WHERE `b_model_name`.`sid` = a.sid LIMIT 1
我觉得你的代码没问题 您被否决的原因之一是,我认为您违反了惯例,为标准关系定义了自定义的
外键
而且,我看不出你到底想达到什么目的!如果模型完全不同,则必须定义一个自定义关系,但看起来它们是一个标准的has_one/behing_to
关系
也许你可以试试这个:
class A < ActiveRecord::Base
has_one :b, class_name: "B"
end
class B < ActiveRecord::Base
belongs_to :a, class_name: "A"
end
as
id | a1 | a2 | a3 | a4 | created_at | updated_at
bs
id | a_id | b1 | b2 | b3 | created_at | updated_at
class A