Неизменяемый ресурс не может быть изменен (DataMapper :: ImmutableError) - PullRequest
0 голосов
/ 17 октября 2011

У меня есть список комментариев, хранящихся в базе данных.Я могу извлечь комментарий из базы данных и манипулировать им, однако я получаю ошибку, когда пытаюсь обновить базу данных снова через datamapper.

Я получаю следующую ошибку:

/usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.1.0/lib/dm-core/resource/state/immutable.rb:16:in `set': Immutable resource cannot be modified (DataMapper::ImmutableError)
from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.1.0/lib/dm-core/model/property.rb:238:in `body='
from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.1.0/lib/dm-core/resource.rb:334:in `block in attributes='
from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.1.0/lib/dm-core/resource.rb:330:in `each'
from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.1.0/lib/dm-core/resource.rb:330:in `attributes='
from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.1.0/lib/dm-core/resource.rb:379:in `update'
from /usr/local/lib/ruby/gems/1.9.1/gems/dm-validations-1.1.0/lib/dm-validations.rb:75:in `block in update'
from /usr/local/lib/ruby/gems/1.9.1/gems/dm-validations-1.1.0/lib/dm-validations/support/context.rb:30:in `validation_context'
from /usr/local/lib/ruby/gems/1.9.1/gems/dm-validations-1.1.0/lib/dm-validations.rb:75:in `update'
from process.rb:32:in `block (2 levels) in <main>'
from process.rb:28:in `each_line'
from process.rb:28:in `block in <main>'
from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.1.0/lib/dm-core/collection.rb:507:in `block in each'
from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.1.0/lib/dm-core/support/lazy_array.rb:411:in `block in each'
from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.1.0/lib/dm-core/support/lazy_array.rb:411:in `each'
from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.1.0/lib/dm-core/support/lazy_array.rb:411:in `each'
from /usr/local/lib/ruby/gems/1.9.1/gems/dm-core-1.1.0/lib/dm-core/collection.rb:504:in `each'
from process.rb:27:in `<main>'

А вот код:

comments.each do |comment|
  comment.body.each_line do |comment_line|
    comment_line = comment_line.lstrip
      if comment_line[0]== '>'
        new_comment = comment.body.slice! comment_line
        comment.update(:body => new_comment)
        comment.save
      end
   end
 end 

Что я делаю не так?

1 Ответ

1 голос
/ 17 октября 2011

Не нужно звонить comment.save - удалите его, и возможно, оно будет работать

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...