Could anyone answer me when a resource should be immutable? And why? Thanks.
Best regards,
Zhi-Qiang Lei
zhiqia...@gmail.com
--
You received this message because you are subscribed to the Google Groups "DataMapper" group.
To post to this group, send email to datam...@googlegroups.com.
To unsubscribe from this group, send email to datamapper+...@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.
To check for this (and to initialize relationships), you should always
run DataMapper.finalize after defining all your models.
Regards
Jon
So if you have a Person model with a Serial id and you do something like:
Person.all(:job => 'coder', :fields => [ :name ])
you will get back a Collection of immutable resources, because you've
told it specifically to not include the key property (:id)
cheers
snusnu
If you have a resource in memory, but you don't know it's key, there's
no way to persist it back to the datastore.
I still get the error with your spec code, here is the backtrace.
Failures:
1) Loan#count! when a loan exists from giver to receiver
Failure/Error: Loan.count!(money_flow)
DataMapper::ImmutableError:
Immutable resource cannot be modified
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/dm-core-1.0.2/lib/dm-core/resource/state/immutable.rb:16:in `set'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/dm-core-1.0.2/lib/dm-core/model/property.rb:251:in `amount='
# ./lib/models.rb:49:in `count!'
# ./spec/models_spec.rb:64:in `block (4 levels) in <top (required)>'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-expectations-2.4.0/lib/rspec/matchers/change.rb:17:in `call'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-expectations-2.4.0/lib/rspec/matchers/change.rb:17:in `matches?'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-expectations-2.4.0/lib/rspec/expectations/handler.rb:34:in `handle_matcher'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-expectations-2.4.0/lib/rspec/expectations/extensions/kernel.rb:50:in `should_not'
# ./spec/models_spec.rb:63:in `block (3 levels) in <top (required)>'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/example.rb:49:in `instance_eval'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/example.rb:49:in `block (2 levels) in run'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/example.rb:98:in `with_around_hooks'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/example.rb:46:in `block in run'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/example.rb:91:in `block in with_pending_capture'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/example.rb:90:in `catch'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/example.rb:90:in `with_pending_capture'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/example.rb:45:in `run'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/example_group.rb:261:in `block in run_examples'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/example_group.rb:257:in `map'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/example_group.rb:257:in `run_examples'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/example_group.rb:231:in `run'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/example_group.rb:232:in `block in run'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/example_group.rb:232:in `map'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/example_group.rb:232:in `run'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/command_line.rb:27:in `block (2 levels) in run'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/command_line.rb:27:in `map'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/command_line.rb:27:in `block in run'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/reporter.rb:12:in `report'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/command_line.rb:24:in `run'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/runner.rb:55:in `run_in_process'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/runner.rb:46:in `run'
# /Users/siegfried/.rvm/gems/ruby-1.9.2-p136/gems/rspec-core-2.4.0/lib/rspec/core/runner.rb:10:in `block in autorun'
> For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.
>
Best regards,
Zhi-Qiang Lei
zhiqia...@gmail.com
This model also has two more keys, they make a composite keys. This will also make it immutable?
>>>> belongs_to :loaner, Person, :key => true
>>>> belongs_to :loanee, Person, :key => true
> For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.
>
Best regards,
Zhi-Qiang Lei
zhiqia...@gmail.com
> For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.
>
Best regards,
Zhi-Qiang Lei
zhiqia...@gmail.com
On Jan 13, 2011, at 3:17 AM, RipTheJacker wrote:
> For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.
>
Best regards,
Zhi-Qiang Lei
zhiqia...@gmail.com
> For more options, visit this group at http://groups.google.com/group/datamapper?hl=en.
>
Best regards,
Zhi-Qiang Lei
zhiqia...@gmail.com