Ruby on rails 为什么一个关联中的父模型具有外键=nil
我有两种型号:Ruby on rails 为什么一个关联中的父模型具有外键=nil,ruby-on-rails,associations,has-one,Ruby On Rails,Associations,Has One,我有两种型号: class User < ActiveRecord::Base before_create :add_address has_one :address def add_address self.address_id ||= Address.generate_new.id end end 及 当我创建User.new时,它创建地址关联并保存,我可以使用User.address获取它,并且mysql地址行中的User\u id正确,但mysql中的
class User < ActiveRecord::Base
before_create :add_address
has_one :address
def add_address
self.address_id ||= Address.generate_new.id
end
end
及
当我创建User.new时,它创建地址关联并保存,我可以使用User.address获取它,并且mysql地址行中的User\u id正确,但mysql中的User具有address\u id=nil。我做错了什么?我尝试了User.new\User.build\u address创建和保存地址的两种方式,但用户总是有address\u id=nil为什么在用户模型中有address\u id列?关联在地址表上有用户id就足够了。这是应该的方式。从 区别在于您将外键放在表中的位置,该外键用于声明“属于”关联的类 这意味着,由于您的地址模型声明了所属的,所以应该将外键放置在该位置 rails在后台搜索user.address时所做的是搜索用户id等于当前用户id的地址 比如:
Select * From addresses where user_id = <current_user>.id
Select * From addresses where user_id = <current_user>.id