Skip to content

Commit

Permalink
Merge commit '9399b27f3f58c1e333b6dd5f20bbcd3531fa4b5e'
Browse files Browse the repository at this point in the history
  • Loading branch information
Chris Anderson committed Nov 23, 2008
2 parents 5d34117 + 9399b27 commit 64d71d3
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 5 deletions.
13 changes: 10 additions & 3 deletions lib/couchrest/core/model.rb
Expand Up @@ -440,15 +440,22 @@ def database
end

# Takes a hash as argument, and applies the values by using writer methods
# for each key. Raises a NoMethodError if the corresponding methods are
# missing. In case of error, no attributes are changed.
def update_attributes hash
# for each key. It doesn't save the document at the end. Raises a NoMethodError if the corresponding methods are
# missing. In case of error, no attributes are changed.
def update_attributes_without_saving hash
hash.each do |k, v|
raise NoMethodError, "#{k}= method not available, use key_accessor or key_writer :#{k}" unless self.respond_to?("#{k}=")
end
hash.each do |k, v|
self.send("#{k}=",v)
end
end

# Takes a hash as argument, and applies the values by using writer methods
# for each key. Raises a NoMethodError if the corresponding methods are
# missing. In case of error, no attributes are changed.
def update_attributes hash
update_attributes_without_saving hash
save
end

Expand Down
12 changes: 10 additions & 2 deletions spec/couchrest/core/model_spec.rb
Expand Up @@ -135,7 +135,7 @@ def generate_slug_from_title
end
end

describe "update attributes" do
describe "update attributes without saving" do
before(:each) do
a = Article.get "big-bad-danger" rescue nil
a.destroy if a
Expand All @@ -161,13 +161,21 @@ def generate_slug_from_title
@art['title'].should == "big bad danger"
end

end

describe "update attributes" do
before(:each) do
a = Article.get "big-bad-danger" rescue nil
a.destroy if a
@art = Article.new(:title => "big bad danger")
@art.save
end
it "should save" do
@art['title'].should == "big bad danger"
@art.update_attributes('date' => Time.now, :title => "super danger")
loaded = Article.get @art.id
loaded['title'].should == "super danger"
end

end

describe "a model with template values" do
Expand Down

0 comments on commit 64d71d3

Please sign in to comment.