Skip to content

Instantly share code, notes, and snippets.

@Florent2
Created December 11, 2009 23:17
Show Gist options
  • Save Florent2/254595 to your computer and use it in GitHub Desktop.
Save Florent2/254595 to your computer and use it in GitHub Desktop.
diff --git a/vendor/plugins/admin_data/app/controllers/admin_data/main_controller.rb b/vendor/plugins/admin_data/app/controllers/admin_data/main_controller.rb
index 9aabf67..85a8516 100644
--- a/vendor/plugins/admin_data/app/controllers/admin_data/main_controller.rb
+++ b/vendor/plugins/admin_data/app/controllers/admin_data/main_controller.rb
@@ -70,7 +70,8 @@ class AdminData::MainController < AdminData::BaseController
def update
model_name_underscored = @klass.name.underscore
model_attrs = params[model_name_underscored]
- if @model.update_attributes(model_attrs)
+ @model.send(:attributes=, model_attrs, false)
+ if @model.save
flash[:success] = "Record was updated"
redirect_to admin_data_on_k_path(:id => @model, :klass => @klass.name.underscore)
else
diff --git a/vendor/plugins/admin_data/test/functional/main_controller_test.rb b/vendor/plugins/admin_data/test/functional/main_controller_test.rb
index f148cc9..18b81f7 100644
--- a/vendor/plugins/admin_data/test/functional/main_controller_test.rb
+++ b/vendor/plugins/admin_data/test/functional/main_controller_test.rb
@@ -354,6 +354,21 @@ class AdminData::MainControllerTest < ActionController::TestCase
should_not_change('article count') { Article.count }
end
+ context 'update article status protected attribute successful' do
+ setup do
+ grant_update_access
+ post :update, { :klass => Article.name.underscore,
+ :id => @article,
+ :article => {:title => 'new title', :status => 'something'}}
+ end
+ should_respond_with :redirect
+ should_redirect_to('show page') { admin_data_on_k_path( :id => Article.last,
+ :klass => Article.name.underscore) }
+ should_set_the_flash_to /Record was updated/
+ should_not_change('article count') { Article.count }
+ should_change "@article.status", :from => 'published', :to => 'something'
+ end
+
context 'update car successful' do
setup do
grant_update_access
diff --git a/vendor/plugins/admin_data/test/rails_root/app/models/article.rb b/vendor/plugins/admin_data/test/rails_root/app/models/article.rb
index 5e79815..7e61aa9 100644
--- a/vendor/plugins/admin_data/test/rails_root/app/models/article.rb
+++ b/vendor/plugins/admin_data/test/rails_root/app/models/article.rb
@@ -2,6 +2,8 @@ class Article < ActiveRecord::Base
set_primary_key 'article_id'
+ attr_protected :status
+
has_many :comments, :dependent => :destroy
belongs_to :magazine, :polymorphic => true
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment