child 关联的构建和 "assign" 之间的区别?
Difference between build and "assign" for a child association?
我很好奇使用 "build" 或直接为关联分配 child 有什么区别?
假设我已经有一个@user 实例,我只想创建与组织的child 关联:
方法一:
@organization = Organization.new
@organization.build_user(@user.attributes)
方法二:
@organization = Organization.new
@organization.user = @user
两者做同样的事情,对吧?
如果一个 Organization
有一个 User
,那么直接分配一个关联需要 @user
是一个 User
对象才能工作,否则它很容易抛出错误. build
处理关联并自动设置外键。例如
将工作:
@organization.build_user({username: "User"})
将工作:
@organization.user = User.new(username: "User")
不会工作:
@organization.user = {username: "User"}
我很好奇使用 "build" 或直接为关联分配 child 有什么区别?
假设我已经有一个@user 实例,我只想创建与组织的child 关联:
方法一:
@organization = Organization.new
@organization.build_user(@user.attributes)
方法二:
@organization = Organization.new
@organization.user = @user
两者做同样的事情,对吧?
如果一个 Organization
有一个 User
,那么直接分配一个关联需要 @user
是一个 User
对象才能工作,否则它很容易抛出错误. build
处理关联并自动设置外键。例如
将工作:
@organization.build_user({username: "User"})
将工作:
@organization.user = User.new(username: "User")
不会工作:
@organization.user = {username: "User"}