aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/associations/has_one_association.rb
diff options
context:
space:
mode:
Diffstat (limited to 'activerecord/lib/active_record/associations/has_one_association.rb')
-rw-r--r--activerecord/lib/active_record/associations/has_one_association.rb18
1 files changed, 18 insertions, 0 deletions
diff --git a/activerecord/lib/active_record/associations/has_one_association.rb b/activerecord/lib/active_record/associations/has_one_association.rb
index d917f0a799..a6a80083f4 100644
--- a/activerecord/lib/active_record/associations/has_one_association.rb
+++ b/activerecord/lib/active_record/associations/has_one_association.rb
@@ -7,6 +7,24 @@ module ActiveRecord
construct_sql
end
+ def create(attributes = {}, replace_existing = true)
+ record = build(attributes, replace_existing)
+ record.save
+ record
+ end
+
+ def build(attributes = {}, replace_existing = true)
+ record = @association_class.new(attributes)
+
+ if replace_existing
+ replace(record, true)
+ else
+ record[@association_class_primary_key_name] = @owner.id unless @owner.new_record?
+ end
+
+ record
+ end
+
def replace(obj, dont_save = false)
load_target
unless @target.nil?