On 23 March 2010 15:08, Craig White <craigwh...@azapple.com> wrote: > On Tue, 2010-03-23 at 08:53 +0000, Colin Law wrote: >> On 23 March 2010 02:15, Craig White <craigwh...@azapple.com> wrote: >> > On Tue, 2010-03-23 at 03:02 +0100, Tony Tony wrote: >> >> Craig White wrote: >> >> >> >> > I would have a table called pricing and have a column that had the >> >> > customer_id and thus you might have 2 (or more) prices for an item but >> >> > only one for a specific customer or default to the one that is not tied >> >> > to a specific customer. >> >> >> >> Hi Craig! >> >> >> >> I don't think this would work as there are quite a number of clients >> >> (over 25) who currently have a different price per product. In the >> >> future there might be additional clients with custom pricing depending >> >> on how much volume they push. >> >> >> >> If I were to implement your suggestion I would have to have 25+ fields >> >> (pricing_1, pricing_2, pricing_3, etc.) which I don't think is the >> >> correct approach for this. Did I misunderstand your suggestion? >> > ---- >> > yes, you misunderstood... sorry if I wasn't clear enough. Something like >> > this, definitely not tested and perhaps you can get it down to a single >> > query. >> > >> > Class Pricing >> > has_one :customer >> > belongs_to :item >> >> Should that be belongs_to: customer rather than has_one, along with >> customer has_many pricings, and item has_many pricings? >> I would have used class Price rather then Pricings but that is a >> matter of personal preference. > ---- > that's an interesting question and probably reflects on the fuzziness of > my understanding of the difference between belongs_to and has_one. While > I can clearly see that the intent is that the difference is which table > has the referencing id, I tend to think of belongs_to as a 'must' and > has_one as a 'may' and in my original answer, I was contemplating a > price for each item that was not associated with any customer. If it > were left to me, I would probably create a 'retail' customer and > actually indicated that in my follow up answer. > ----
The relationships are has_many and belongs_to or has_one and belongs_to. In both cases the belongs_to is the one with the foreign key. In this case since Customer has_many Prices, it must be Price belongs_to Customer. Colin >> >> > >> > id >> > price >> > customer_id >> >> You will need an item_id also > ---- > yes > ---- >> > >> > def self.item_price(item, customer) >> > if Price.find(:first, :conditions => ["item_id = ? AND customer_id >> > = ?", item, customer']) then >> > return Price.find(:first, :conditions => ["item_id = ? AND >> > customer_id = ?", item, customer']).price >> > else >> > return Price.find(:first, :conditions => ["item_id = ? AND >> > customer_id = NULL", item]).price >> > end >> > end >> >> This could be done as a named scope which might make for a neater solution. > ---- > probably true and probably how I would end up doing it. It was just a > top of my head answer and the defined method could easily be converted > into a named_scope. > > Craig > > > -- > This message has been scanned for viruses and > dangerous content by MailScanner, and is > believed to be clean. > > -- > 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-t...@googlegroups.com. > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscr...@googlegroups.com. > For more options, visit this group at > http://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-t...@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.