Есть две модели A
, B
так:У странных спутанных ассоциаций ActiveRecord has_one?
class A < ActiveRecord::Base
has_one :b,:foreign_key => :sid
end
class B < ActiveRecord::Base
belongs_to :a,:foreign_key => :sid
end
A
имеет поле id
который auto_increment, подал sid
, которые Uniq
B
подал sid
, что я установить в primary_key
Теперь я хочу получить b
экземпляр через a
экземпляр. мой следующий код:
A.frist.b
я получил ошибку
SELECT `b_model_name`.* FROM `b_model_name` WHERE `b_model_name`.`sid` = 1 LIMIT 1
внимания в модели базы данных B
есть запись, которая модель ассоциации A
сначала 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