Hi Diego,

You're correct when you say you can add the logic for a has_many /
belongs_to (which is a one to many relationship), but as far as I'm aware,
you need a has_many :through for adding logic to a many-to-many
relationship.

Good luck with the internship!
Timothy.

On 22 September 2014 12:37, Diego Dillenburg Bueno <
diegodillenb...@gmail.com> wrote:

> Won't I be able to add the logic I need for debts using has_many
> belongs_to? Basically all that I would need is to gather which debts I(as
> the user) have and be able to(in future) toggle their 'paid/unpaid' status.
> Or would it be better to have a relationship table? via has_many through?
>
> As of the soft deleting I'm gonna narrow it down haha at first I'm just
> trying to build some concrete functionality, this is just to show some
> coding skills for an internship, gonna try 'n develop it much further when
> I get the time and skills.
>
> Anywyay, thanks for helping!
> Diego Dillenburg Bueno
>
> 2014-09-21 20:47 GMT-03:00 Timothy Mukaibo <timo...@mukaibo.com>:
>
>> Assuming a single creditor and multiple debtors for a single billing, you
>> will need a one to one relationship for the creditor -> billing (belongs_to
>> on the billing, as you have done), but a many to many relationship for
>> debts -> users.
>>
>> Generally, it's better to implement the many-to-many as a has_many
>> :through so you can add logic. It's probably doubly important when there is
>> money involved!
>>
>> I would rethink the dependent: destroy though. You probably want to use a
>> soft delete instead, or else you will lose your past transactions.
>>
>> On 21 September 2014 05:37, Diego Dillenburg Bueno <
>> diegodillenb...@gmail.com> wrote:
>>
>>> Hello everyone,
>>>
>>> I'm a beginner Rails developer and right now am building a sample
>>> project to show off at some job apply. The app is rather simple, I guess,
>>> but I have come to some doubts on what associations to chose and why.
>>>
>>> Basically a User can create a bill(being its creditor) and the billing
>>> can have many other Users(as their debtors), so you can track up billings
>>> you share with other persons, like rent, market, food orders etc, and
>>> control what each one got to pay you.
>>>
>>> Right now I have the following model:
>>>
>>> class User < ActiveRecord::Base
>>> has_many :billings, foreign_key: "creditor_id", dependent: :destroy
>>> has_many :debts, foreign_key: "debtor_id", dependent: :destroy
>>> end
>>>
>>> class Billing < ActiveRecord::Base
>>> belongs_to :creditor, class_name: "User"
>>> has_many :debts, dependent: :destroy
>>> end
>>>
>>> class Debt < ActiveRecord::Base
>>> belongs_to :billing
>>> belongs_to :user
>>> end
>>>
>>> would this be the better approach? Or something like:
>>> User has_many billings through debts
>>> Billing has_many debts ?
>>>
>>> And in that case, would appreciate some help to model those
>>> associations, because I'm still kinda lost on this flow.
>>>
>>> Thanks in advance,
>>> Diego Dillenburg Bueno
>>>
>>> --
>>> You received this message because you are subscribed to the Google
>>> Groups "Ruby on Rails: Talk" group.
>>> To unsubscribe from this group and stop receiving emails from it, send
>>> an email to rubyonrails-talk+unsubscr...@googlegroups.com.
>>> To post to this group, send email to rubyonrails-talk@googlegroups.com.
>>> To view this discussion on the web visit
>>> https://groups.google.com/d/msgid/rubyonrails-talk/CAOHSkmE893vhkwHsna6e5Ax4fCZipg965brtieXtr9Ui6OAVdw%40mail.gmail.com
>>> <https://groups.google.com/d/msgid/rubyonrails-talk/CAOHSkmE893vhkwHsna6e5Ax4fCZipg965brtieXtr9Ui6OAVdw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>> .
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>
>>  --
>> You received this message because you are subscribed to the Google Groups
>> "Ruby on Rails: Talk" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to rubyonrails-talk+unsubscr...@googlegroups.com.
>> To post to this group, send email to rubyonrails-talk@googlegroups.com.
>> To view this discussion on the web visit
>> https://groups.google.com/d/msgid/rubyonrails-talk/CABLJ1D%2BrD9ENPDHS5xAAH_aYr2f33uq%2BMQRkmxPn%2B6-i%3DY_Q%3Dw%40mail.gmail.com
>> <https://groups.google.com/d/msgid/rubyonrails-talk/CABLJ1D%2BrD9ENPDHS5xAAH_aYr2f33uq%2BMQRkmxPn%2B6-i%3DY_Q%3Dw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>> .
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>  --
> You received this message because you are subscribed to the Google Groups
> "Ruby on Rails: Talk" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to rubyonrails-talk+unsubscr...@googlegroups.com.
> To post to this group, send email to rubyonrails-talk@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/rubyonrails-talk/CAOHSkmHFaYLV7mvXA6%2BfQYkiV%2B%2BRbhMRB6iPD6Ge_BNmfBujvA%40mail.gmail.com
> <https://groups.google.com/d/msgid/rubyonrails-talk/CAOHSkmHFaYLV7mvXA6%2BfQYkiV%2B%2BRbhMRB6iPD6Ge_BNmfBujvA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to rubyonrails-talk+unsubscr...@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/rubyonrails-talk/CABLJ1D%2BoqivQ_EmhDjydaLvVf7HGN0kgy%2B6zquSpHDt3exyE3g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to