On Tue, 2010-03-23 at 08:53 +0000, Colin Law wrote:
> On 23 March 2010 02:15, Craig White <[email protected]> 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.
----
> 
> >
> > 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 [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en.

Reply via email to