ber*_*kes 12 activerecord ruby-on-rails
我有一个可以有0或1个配置文件的用户.在我的Controller中,如果给出了一些值,我想保存配置文件,如下所示:
# PUT /users/1
def update
@user = User.find(params[:id])
if @user.update_attributes(params[:user])
if params[:profile][:available] == 1 #available is a checkbox that stores a simple flag in the database.
@user.create_profile(params[:profile])
end
else
#some warnings and errors
end
end
Run Code Online (Sandbox Code Playgroud)
我想知道的部分是create_profile
魔术create_somerelationname
.这与魔术相比如何build_somerelationname
?什么时候应该使用哪个?
fl0*_*00r 10
@user.build_profile
是相同的
Profile.new(:user_id => @user.id)
Run Code Online (Sandbox Code Playgroud)
虽然@user.create_profile
是一样的
Profile.create(:user_id => @user.id)
Run Code Online (Sandbox Code Playgroud)
@user.create_profile
可以build_profile
像这样呈现:
profile = @user.build_profile
profile.save
Run Code Online (Sandbox Code Playgroud)
http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_one