diff --git a/lib/her/model/attributes.rb b/lib/her/model/attributes.rb
index <HASH>..<HASH> 100644
--- a/lib/her/model/attributes.rb
+++ b/lib/her/model/attributes.rb
@@ -69,7 +69,15 @@ module Her
       #   user.assign_attributes(name: "Lindsay")
       #   user.changes # => { :name => ["Tobias", "Lindsay"] }
       def assign_attributes(new_attributes)
+        if !new_attributes.respond_to?(:to_hash)
+          raise ArgumentError, "When assigning attributes, you must pass a hash as an argument."
+        end
+
+        # Coerce new_attributes to hash in case of strong parameters
+        new_attributes = new_attributes.to_hash
+
         @_her_attributes ||= attributes
+
         # Use setter methods first
         unset_attributes = self.class.use_setter_methods(self, new_attributes)
 
diff --git a/spec/model/attributes_spec.rb b/spec/model/attributes_spec.rb
index <HASH>..<HASH> 100644
--- a/spec/model/attributes_spec.rb
+++ b/spec/model/attributes_spec.rb
@@ -86,6 +86,10 @@ describe Her::Model::Attributes do
       @user.assign_attributes active: true
       expect(@user).to be_active
     end
+
+    it "expects to receive hash" do
+      expect { @user.assign_attributes(1) }.to raise_error(ArgumentError, 'When assigning attributes, you must pass a hash as an argument.')
+    end
   end
 
   context "checking resource equality" do
coerce new attributes to hash