diff --git a/lib/object_daddy.rb b/lib/object_daddy.rb index 340c1e1..cb4b237 100644 --- a/lib/object_daddy.rb +++ b/lib/object_daddy.rb @@ -167,11 +167,12 @@ def generate_missing(args) (presence_validated_attributes.keys - args.keys).each {|a| req[a.to_s] = true } # find attributes required by validates_presence_of not already set belongs_to_associations = reflect_on_all_associations(:belongs_to).to_a - missing = belongs_to_associations.select { |a| req[a.name.to_s] or req[a.primary_key_name.to_s] } - if create_scope = scope(:create) - missing.reject! { |a| create_scope.include?(a.primary_key_name) } - end - missing.reject! { |a| [a.name, a.primary_key_name].any? { |n| args.stringify_keys.include?(n.to_s) } } + missing = belongs_to_associations.select { |a| req[a.name.to_s] or req[a.foreign_key.to_s] } + + scoped_attributes = scope_attributes.keys + missing.reject! { |a| scoped_attributes.include?(a.foreign_key) } + + missing.reject! { |a| [a.name, a.foreign_key].any? { |n| args.stringify_keys.include?(n.to_s) } } missing.each {|a| args[a.name] = a.class_name.constantize.generate } end end