[Catalyst] Re: Re: Template creates objects via belongs_to

Matt Rosin mattrosin at yahoo.com
Thu Jun 14 04:22:37 GMT 2007


Hi!

Thank you very much for your help.

My response to your initial comments is "Ahah." I see. Allow me to clarify the business logic as you recommend.

1. A customer may be associated with many transactions, or none at all.
2. A transaction can be associated with only a single customer, or no customer at all.
3. A transaction is either created automatically, in response to verification of an incoming IPN (linked to a preexisting customer), or the Admin can create a blank transaction to be edited later for legacy bookkeeping.

The system is running now at www.thecommunitypage.com which is a site showing business listings that allows customers to purchase ads and paid listings with automatic fulfillment. When a payment is made, a record of the transaction is created, and based on the product they bought from the sales catalog, a package associated with 0 or more listings are also created. Transactions, packages and listings all know the customer who owns them. (White pages listings have no package).

Regarding your note about a dummy customer: I use Customer ID 0: no record in table, Customer ID 1: Site Owner. So I could make a blank record belong to the Site Administrator customer, or I could create a dummy customer with id 0, if mysql lets me. In which case in rule 2 above the phrase "or no customer at all" could be deleted.

Therefore a Transaction need not always be linked to a customer as if by a constraint. I supposed I need to either use NOT_NULL to express this fact. Would might_have do the same thing? Its documentation seems to be partly finished (the line that begins "Assuming"). Could I get the same effect in belongs_to and suppess autovivification by adding "cascade_delete => 0" or is this only going to work with might_have?

Final question. It looks like maybe I should replace all belongs_to to might_have since I don't want autovivification at any time in my app. Now I am having a bit of trouble with the docs (probably also since I have been infected with CDBI before coming to this) because there is also has_one which appears to do just what belongs_to does, but backwards. Or is it just like has_a in Class::DBI, in other words the inverse of belongs_to? I.e. should one object say "has_one" and the other object say "belongs_to"? It seems though that I should just use might_have all the time. Also presumably has_many will not autovivify even if it has none at all... right? 

Thank you and sincere apologies for muddying things,

Matt @ feeling dense today


 
____________________________________________________________________________________
Finding fabulous fares is fun.  
Let Yahoo! FareChase search your favorite travel sites to find flight and hotel bargains.
http://farechase.yahoo.com/promo-generic-14795097



More information about the Catalyst mailing list