Re: Structuring Active Record relationships

RichardOnRails
Wed, 12 May 2010 15:02:13 -0000

Hi Sharagoz,

> Does this make sense?

Absolutely!  It''s crystal clear.

Many thanks,
Richard

On May 12, 3:58 am, Sharagoz
<shara...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:
> Expense would belong to Vendor, not have one Vendor, unless you are
> planning to put the foreign key in the vendors table, which sounds
> very strange, as that would require a new vendor to be created for
> every expense.
> If you are fist selecting a vendor, and then selecting an account
> belonging to that vendor when you create an expense, then it makes
> sense to hook expense up to account, not vendor.
>
> class Vendor
>   has_many :accounts
>
> class Account
>   belongs_to :vendor
>   has_many :expenses
>
> class Expense
>   belongs_to :account
>
> Then when you have created an expense you can get its account through
> @expense.account and its vendor through @expense.account.vendor.
> Does this make sense?
>
> On May 12, 3:22 am, RichardOnRails
>
>
>
>
<RichardDummyMailbox58...-FtJgd9dCuO3JTKoYRCtP1UEOCMrvLtNR@public.gmane.org>
wrote:
> > Thinking about it some more,  I now think I should have separate
> > Expense, Vendor and Account tables with the following relationships:
>
> > class Expense
> >         has_one Vendor
>
> > class Vendor
> >         has_many Accounts
> >         belongs_to Expense
>
> > class Account
> >         belongs_to Vendor
>
> > Then an Expense record can get Accounts through Vendor. .. or
> > something like that.
>
> > Am I getting warmer?
>
> > Thanks in Advance,
> > Richard
>
> > On May 11, 8:57 pm, RichardOnRails
>
> >
<RichardDummyMailbox58...-FtJgd9dCuO3JTKoYRCtP1UEOCMrvLtNR@public.gmane.org>
wrote:
> > > Hi,
>
> > > I have three tables: Expenses, Vendors and Vendor _Accounts
>
> > > It should operate as follows:
> > > When a new Expense record is created,
> > > A vendor is selected from a drop-down of Vendors and,
> > > An account is selected from a drop-down of Vendor_Accounts where
> > > Vendor_Accounts#vender == selected vendor
>
> > > So I should have a structure something like:
> > > class Expense
> > >         has_one Vendor
>
> > > class Vendor
> > >         has_many Vendor_Accounts where Vendor#id ==
Vendor_Accounts#vendor
> > >         belongs_to Expense
>
> > > class Vendor_Account
> > >         belongs_to Vendor
>
> > > I don’t think I should have Expense, Vendor and Account tables
because
> > > the accounts defined by each vendor bear no relationship with the
> > > other vendors’ account beyond the mere concept of “account”.
>
> > > Does this make sense, and if so,  how precisely should I describe
> > > these relationships? Am I close with the above idea?
>
> > > BTW, I''m running Rails 2.3.5, Ruby 1.8.6, WinXP-Pro/SP3,
Firefox
> > > 3.6.2, Firebug 1.5.3,
> > > MySQL 5.0.37-community-nt, Mongrel, Apache HTTP Server 2.2.15
>
> > > Thanks in Advance,
> > > Richard
>
> > > --
> > > You received this message because you are subscribed to the
Google Groups "Ruby on Rails: Talk" group.
> > > To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh4Ykp1iOSErHA@public.gmane.orgm.
> > > To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
> > > For more options, visit this group
athttp://groups.google.com/group/rubyonrails-talk?hl=en.
>
> > --
> > You received this message because you are subscribed to the Google
Groups "Ruby on Rails: Talk" group.
> > To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
> > To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
> > For more options, visit this group