The Problem: how to do the validation. I have not written it
correctly!!!
Given two tables: sizes and prices;
with a relation: has_many ,belongs_to
a Price.unit_price for a given Size.meassure must be
marked ''true'' as the standard unit_price for that meassure.
There will be many other unit_prices for a given meassure, those must be
marked ''false''
table sizes
meassure, :string (ie.small, medium, big)
Model Size
has_many :prices
table prices
price_name :string
unit_price :integer
standard :boolean
size_id :integer
Model Price
belongs_to :size
I have tried both of this validation options in the Price model,
first one, then the other and none works for my stated needs.
validates_uniqueness_of :standard, :scope => :size_id,
:message => " : There is a standard price
for this meassure"
(this one fails because it just allows ONE ''true'' in a
:standard
field in the entire
database for ANY value of size_id; so once there is a ''true''
in the
:standard field of the whole database, it will not allow any more;
so tha does not fit me...)
protected
def validate
errors.add(:standard, " : There is a standard price for this
meassure") if
size_id and standard == ''true''
end
(this one fails because it allows to have many ''true'' values
in
the :standard
field of the database)
This is what i need to get:
I am using MySQL, notice that MySQL writes ''true'' = 1 and
''false'' = 0;
also see that for a given unit_price for a meassure
there can only be one standard = ''true''=1 value.
------------------------------------------------------------------------
----------------------------------
sizes (in the Size model
validates_uniqueness_of :meassure)
------------------------------------------------------------------------
----------------------------------
id meassure
--------------------------------------------------------
1 Small
2 Medium
3 Big
--------------------------------------------------------
-----------------------------------------------------------------------
prices
-----------------------------------------------------------------------
id price_name unit_price standard size_id
-----------------------------------------------------------------------
1 normal 1250 1 1
2 sale 500 0 1
3 summer 900 0 1
4 wholesale 1000 0 2
5 normal 1900 1 2
6 winter 1500 0 2
7 normal 3000 1 3
8 thanksgiving 2500 0 3
9 sale 1000 0 3
------------------------------------------------------------------------
-
Please help me write up the correct way to validate this problem