I tried to work out an active resource example with complex relationships between records and had not much luck so I gave up and manipulate *_id fields myself to get around this in a somewhat cludgy way at times. I am wondering if there are any good books with examples on this ? I have the agile web book 2, does book 3 go into this in greater depth ?
You might take a look at: http://guides.rubyonrails.org/ Once you get there follow the links to the different Model topics, in particular check out: http://guides.rubyonrails.org/association_basics.html On Jun 19, 11:52 am, Jedrin <jrubia...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I tried to work out an active resource example with complex > relationships between records and had not much luck so I gave up and > manipulate *_id fields myself to get around this in a somewhat cludgy > way at times. I am wondering if there are any good books with examples > on this ? I have the agile web book 2, does book 3 go into this in > greater depth ?
What I mean is active resource over a web service so that you run a ruby script outside of rails remotely and access the active record objects in the rails service over http as active resource provides and still have the complex relationships, that second part I have found tricky On Jun 19, 1:40 pm, Rick <Richard.T.Ll...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> You might take a look at:http://guides.rubyonrails.org/ > > Once you get there follow the links to the different Model topics, in > particular check out:http://guides.rubyonrails.org/association_basics.html > > On Jun 19, 11:52 am, Jedrin <jrubia...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > I tried to work out an active resource example with complex > > relationships between records and had not much luck so I gave up and > > manipulate *_id fields myself to get around this in a somewhat cludgy > > way at times. I am wondering if there are any good books with examples > > on this ? I have the agile web book 2, does book 3 go into this in > > greater depth ?
Right. You might want to look at Chap 15 in "The Rails Way", Obie Fernandez et.al., 2008. It covers XML and ActiveResource - only 27 pages but the best I''ve been able to find to date. I''m assuming that what you mean by "complex relationships" is the A...Resource parallel to associations in A...Record. If not, clue me in with more details. On Jun 19, 2:47 pm, Jedrin <jrubia...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> What I mean is active resource over a web service so that you run a > ruby script outside of rails remotely and access the active record > objects in the rails service over http as active resource provides and > still have the complex relationships, that second part I have found > tricky > > On Jun 19, 1:40 pm,Rick<Richard.T.Ll...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > You might take a look at:http://guides.rubyonrails.org/ > > > Once you get there follow the links to the different Model topics, in > > particular check out:http://guides.rubyonrails.org/association_basics.html > > > On Jun 19, 11:52 am, Jedrin <jrubia...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > I tried to work out an active resource example with complex > > > relationships between records and had not much luck so I gave up and > > > manipulate *_id fields myself to get around this in a somewhat cludgy > > > way at times. I am wondering if there are any good books with examples > > > on this ? I have the agile web book 2, does book 3 go into this in > > > greater depth ?
I''ve had that book ever since it came out, and have tried to work on this problem using the book as well. What I seem to recall is that belongs_to, has_many, or anything similar is not that easy to figure out how to get it to work, at least I have not had good luck with it. I find it easier that when the rails server calls a drb process and on some other machine on the network and that process needs to use active resource, I just pass an array of record id''s through drb and then drb can do rec.find(id) which works fine. Then if I have a relationship, I just handle it manually by setting say rec.parent_id. Other types of find() may cause the server to send over all the records for it to search through which can be a problem if there are too many records. This seems kludgy, but that''s what I have been doing ever since I gave up on trying to figure this out as it seemed there where not enough good examples or those that I found I had problems getting to work. On Jun 21, 5:25 pm, Rick <Richard.T.Ll...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Right. You might want to look at Chap 15 in "The Rails Way", Obie > Fernandez et.al., 2008. It covers XML and ActiveResource - only 27 > pages but the best I''ve been able to find to date. I''m assuming that > what you mean by "complex relationships" is the A...Resource parallel > to associations in A...Record. If not, clue me in with more details. > > On Jun 19, 2:47 pm, Jedrin <jrubia...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > What I mean is active resource over a web service so that you run a > > ruby script outside of rails remotely and access the active record > > objects in the rails service over http as active resource provides and > > still have the complex relationships, that second part I have found > > tricky > > > On Jun 19, 1:40 pm,Rick<Richard.T.Ll...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > You might take a look at:http://guides.rubyonrails.org/ > > > > Once you get there follow the links to the different Model topics, in > > > particular check out:http://guides.rubyonrails.org/association_basics.html > > > > On Jun 19, 11:52 am, Jedrin <jrubia...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > I tried to work out an active resource example with complex > > > > relationships between records and had not much luck so I gave up and > > > > manipulate *_id fields myself to get around this in a somewhat cludgy > > > > way at times. I am wondering if there are any good books with examples > > > > on this ? I have the agile web book 2, does book 3 go into this in > > > > greater depth ?
what''s been difficult about using active record? can you post snippets of your current code and then maybe we can rewrite it using AR? -Gabe On Jun 22, 9:58 am, Jedrin <jrubia...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> I''ve had that book ever since it came out, and have tried to work on > this problem using the book as well. > > What I seem to recall is that belongs_to, has_many, or anything > similar is not that easy to figure out how to get it to work, at least > I have not had good luck with it. > I find it easier that when the rails server calls a drb process and on > some other machine on the network and that process needs to use active > resource, I just pass an array of record id''s through drb and then drb > can do rec.find(id) which works fine. Then if I have a relationship, I > just handle it manually by setting say rec.parent_id. Other types of > find() may cause the server to send over all the records for it to > search through which can be a problem if there are too many records. > > This seems kludgy, but that''s what I have been doing ever since I > gave up on trying to figure this out as it seemed there where not > enough good examples or those that I found I had problems getting to > work. > > On Jun 21, 5:25 pm, Rick <Richard.T.Ll...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Right. You might want to look at Chap 15 in "The Rails Way", Obie > > Fernandez et.al., 2008. It covers XML and ActiveResource - only 27 > > pages but the best I''ve been able to find to date. I''m assuming that > > what you mean by "complex relationships" is the A...Resource parallel > > to associations in A...Record. If not, clue me in with more details. > > > On Jun 19, 2:47 pm, Jedrin <jrubia...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > What I mean is active resource over a web service so that you run a > > > ruby script outside of rails remotely and access the active record > > > objects in the rails service over http as active resource provides and > > > still have the complex relationships, that second part I have found > > > tricky > > > > On Jun 19, 1:40 pm,Rick<Richard.T.Ll...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > You might take a look at:http://guides.rubyonrails.org/ > > > > > Once you get there follow the links to the different Model topics, in > > > > particular check out:http://guides.rubyonrails.org/association_basics.html > > > > > On Jun 19, 11:52 am, Jedrin <jrubia...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > > > > I tried to work out an active resource example with complex > > > > > relationships between records and had not much luck so I gave up and > > > > > manipulate *_id fields myself to get around this in a somewhat cludgy > > > > > way at times. I am wondering if there are any good books with examples > > > > > on this ? I have the agile web book 2, does book 3 go into this in > > > > > greater depth ?
I''m not sure I understand what you''re trying to accomplish but here''s instructions for a has_and_belongs_to_many example which also provides an ActiveResource (xml) feed. Assumptions: Ruby 1.8.7 Rails 2.3.2 sqlite3 1) run: rails simple_test cd simple_test 2) run: script/generate scaffold User name:string script/generate scaffold Like name:string script/generate migration LikesUsers 3) edit the models user.rb and like.rb to read: class User < ActiveRecord::Base has_and_belongs_to_many :likes end class Like < ActiveRecord::Base has_and_belongs_to_many :users end 4) edit db/migrate/*_likes_users.rb to read: class LikesUsers < ActiveRecord::Migration def self.up create_table :likes_users, :id => false do |t| t.column :like_id, :integer, :null => false t.column :user_id, :integer, :null => false end end def self.down drop_table :likes_users end end 5) edit the users and likes controllers'' show methods to read: # GET /users/1 # GET /users/1.xml def show @user = User.find(params[:id]) respond_to do |format| format.html # show.html.erb format.xml { render :xml => @user.to_xml(:include => :likes) } end end # GET /likes/1 # GET /likes/1.xml def show @like = Like.find(params[:id]) respond_to do |format| format.html # show.html.erb format.xml { render :xml => @like.to_xml(:include => :users) } end end 6) run: rake db:migrate script/server 7) run: script/console Loading development environment (Rails 2.3.2) >> fred = User.create(:name => "Fred") => #<User id: 1, name: "Fred", created_at: "2009-06-24 16:13:42", updated_at: "2009-06-24 16:13:42"> >> fred.save => true >> fred.reload => #<User id: 1, name: "Fred", created_at: "2009-06-24 16:13:42", updated_at: "2009-06-24 16:13:42"> >> wilma = User.create(:name => "Wilma") >> wilma.save >> wilma.reload >> play = Like.create(:name => "playing with BamBam") >> play.save >> eat = Like.create(:name => "eating Bronto burgers") >> eat.save >> laugh = Like.create(:name => "laughing at Freds big shadow") >> laugh.save 8) connect your browser to: http://localhost:3000/users/1.xml connect your browser to: http://localhost:3000/users/2.xml connect your browser to: http://localhost:3000/likes/1.xml connect your browser to: http://localhost:3000/likes/2.xml connect your browser to: http://localhost:3000/likes/3.xml What could be simpler?
If you are using active resource from another machine over a network and you have something like this: require ''rubygems'' require ''activeresource'' ResourceServer = ''http://mysite.com:3000'' class ChildRec < ActiveResource::Base self.site = ResourceServer #self.element_name = '''' end class ParentRec < ActiveResource::Base self.site = ResourceServer #self.element_name = '''' end Then it''s no problem to do stuff like: par = ParentRec.find(31) However, if ParentRec has many child_recs I was saying basically that stuff like using: par.child_recs - I was having difficulty getting to work at the time I had looked into that a few months ago. I can easily do child = ChildRec.new() child.parent_rec_id = par.id
Jedrin Here is an old pdf from Ryan Daigle that talks about this. It appears to be notes from a talk? I haven''t been able to get it to work so the functionality discussed might have been removed from later versions of Active Resource. http://ryandaigle.com/assets/2007/3/14/REST_ARes.pdf Jedrin wrote:> If you are using active resource from another machine over a network > and you have something like this: > > require ''rubygems'' > require ''activeresource'' > > > ResourceServer = ''http://mysite.com:3000'' > > > class ChildRec < ActiveResource::Base > self.site = ResourceServer > > #self.element_name = '''' > end > > > > class ParentRec < ActiveResource::Base > self.site = ResourceServer > > #self.element_name = '''' > end > > > Then it''s no problem to do stuff like: > > par = ParentRec.find(31) > > However, if ParentRec has many child_recs > > I was saying basically that stuff like using: par.child_recs - I > was having difficulty getting to work at the time I had looked into > that a few months ago. > > I can easily do > > child = ChildRec.new() > child.parent_rec_id = par.id-- Posted via http://www.ruby-forum.com/.