Let's say I'm writing a Library application for a publishing company who already has a People application.
So in my Library application I have
class Person < ActiveResource::Base
self.site = "http://api.people.mypublisher.com/"
end
and now I want to store Article
s for each Person
:
class Article < ActiveRecord::Base
belongs_to :person, :as => :author
end
I imagine I'd have the following table in my database:
Articles
id (PK) | title (string) | body (text) | author_id (integer)
author_id
isn't exactly a Foreign-Key, since I don't have a People table. That leaves several questions:
how do I tell my Person
ActiveResource
object that it has_many
Articles
?
Will Articles.find(:first).author
work? Will belongs_to
even work given that there's no ActiveRecord
and no backing table?
I suppose one possibility for #1, assuming I can get any of it working, is to do this:
class Person < ActiveResource::Base
self.site = "http://api.people.mypublisher.com/"
def articles
Article.find(:all, :conditions => { :person_id => self.id })
end
def add_article(article)
article.person_id = self.id
end
end
But it loses a lot of what has_many
offers.
As you point out, you are giving up a lot because ActiveResource does not have associations in the sense that ActiveRecord does.
You have already found the answer to question #1. As for question #2, your ActiveRecord model Article should behave just fine when configured with a "belongs_to" association to an ActiveResource model. That is Aritcle.find(:first).author should return the person object you want.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With