Forum: Ruby on Rails [Help] With no persistence, instances share among actions failed.

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
1f12c984e1be64f4116d492e6918de6f?d=identicon&s=25 J.C. Zhu (Guest)
on 2009-01-08 10:19
(Received via mailing list)
Hi!

My problem instance's properties failed to share among the actions.
e.g. In action 'collect', I created an "CD" instance with some
"Album"s as its properties
using one-many relationship provided by rails API.
Before saving to the db, I just pass the 'CD' instance to action
'show', using @instance_var.
But I can't get properties information using 'cd.albums', it alway
return an empty array.

The reason why the objects do not get persisted is that modification
of objects is necessary.

Why can't I navigate through the relation and How can I pass around
the instance without?
--------------------------------------------------------------------

# model
class Cd < ActiveRecord::Base
        has_many :albums
end

class Album < ActiveRecord::Base
        belongs_to :cd
end

# in action "collect"
@cd = Cd.new
Dir.chdir("/media/cdrom")
        Dir.foreach(Dir.pwd) do | dir |
           logger.debug "found directory : [#{dir}]"
           if dir != "." && dir != ".."
                # collect album inf
                raw_info = dir
                @al = Album.new
                @al.name = dir.to_s
                @al.cd = @cd
                logger.debug "Checking album[#{@al.name}]'s belonging
[#{@al.cd.volumn_name}]"
                logger.debug "Find album folder [#{dir}], thus cd
contains [#{@cd.albums}]"
     end
  end
end

logging:
Processing MusicInventoryController#collect (for 127.0.0.1 at
2009-01-08 14:13:14) [GET]
found directory : [.]
found directory : [..]
found directory : [20090101]
Checking album[20090101]'s belonging [test]
Find album folder [20090101], thus cd contains []
Rendering music_inventory/show
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2009-01-08 10:24
(Received via mailing list)
On Jan 8, 6:47 am, "J.C. Zhu" <realal...@gmail.com> wrote:
>
You never save the @al object, so it's not going to magically appear
in @cd.albums. If you want to add an unsaved object to @cd.albums you
can do
@cd.albums.create ...

Fred
This topic is locked and can not be replied to.