diff options
author | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-09-18 17:50:17 +0000 |
---|---|---|
committer | Jean-Philippe Lang <jp_lang@yahoo.fr> | 2007-09-18 17:50:17 +0000 |
commit | 25012efc9c9b7623937fdb5c944364a6ed9736cb (patch) | |
tree | cdd61bfc9437a5956261ad6916b3ce6dfde9036b | |
parent | eb371db5b96ebd2471cef8156bf6e19e9d97bc06 (diff) | |
download | redmine-25012efc9c9b7623937fdb5c944364a6ed9736cb.tar.gz redmine-25012efc9c9b7623937fdb5c944364a6ed9736cb.zip |
Fixed: Oracle error when saving serialized setting (eg. mail notifications)
git-svn-id: http://redmine.rubyforge.org/svn/trunk@742 e93f8b46-1217-0410-a6f0-8f06a7374b81
-rw-r--r-- | app/models/setting.rb | 5 | ||||
-rw-r--r-- | test/unit/setting_test.rb | 6 |
2 files changed, 11 insertions, 0 deletions
diff --git a/app/models/setting.rb b/app/models/setting.rb index d4c82191a..5341cc952 100644 --- a/app/models/setting.rb +++ b/app/models/setting.rb @@ -35,6 +35,11 @@ class Setting < ActiveRecord::Base v end + def value=(v) + v = v.to_yaml if @@available_settings[name]['serialized'] && v.is_a?(String) + write_attribute(:value, v) + end + # Returns the value of the setting named name def self.[](name) v = @cached_settings[name] diff --git a/test/unit/setting_test.rb b/test/unit/setting_test.rb index 44240ef4e..34d07c193 100644 --- a/test/unit/setting_test.rb +++ b/test/unit/setting_test.rb @@ -36,4 +36,10 @@ class SettingTest < Test::Unit::TestCase # make sure db has been updated (UPDATE) assert_equal "My other title", Setting.find_by_name('app_title').value end + + def test_serialized_setting + Setting.notified_events = ['issue_added', 'issue_updated', 'news_added'] + assert_equal ['issue_added', 'issue_updated', 'news_added'], Setting.notified_events + assert_equal ['issue_added', 'issue_updated', 'news_added'], Setting.find_by_name('notified_events').value + end end |