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.

Reply via email to