hello friends,
I need to modelate a genealogical tree with:
animal,Dam(Mother) and Sire(Father)
the Dam and Sire are Animals then i modelate this:
class Animal < ActiveRecord::Base
belongs_to :sire
belongs_to :dam
validates_associated :sire, :dam
end
class Sire < Animal
has_many :animals
end
class Dam < Animal
has_many :animals
end
then when i save a new animal the validate doesnt work like this:
i have the table Animals
ID, Name Father MOther
1 A - -
2 B - -
when I insert a new record like this
insert(3,C,1,2) its ok!
insert(3,C,5,7) its ok too, (the validates is doesnt work)
how can i solve this??
Alfredo G. wrote:
validates_associated :sire, :dam
then when i save a new animal the validate doesnt work like this:
insert(3,C,5,7) its ok too, (the validates is doesnt work)
how can i solve this??
Use validates_presence_of instead of validates_associated.
Or use in addition to validates_associated if you want to
check some attributes of the associates.
–
We develop, watch us RoR, in numbers too big to ignore.
Mark Reginald J. wrote:
Alfredo G. wrote:
validates_associated :sire, :dam
then when i save a new animal the validate doesnt work like this:
insert(3,C,5,7) its ok too, (the validates is doesnt work)
how can i solve this??
Use validates_presence_of instead of validates_associated.
Or use in addition to validates_associated if you want to
check some attributes of the associates.
–
We develop, watch us RoR, in numbers too big to ignore.
Thanks friend.
the problem is that in some cases an Animals has not father or mother,
then how can i do it??
Alfredo G. wrote:
Use validates_presence_of instead of validates_associated.
the problem is that in some cases an Animals has not father or mother,
then how can i do it??
This should allow clones if your foreign_keys are default NULL:
validates_presence_of :sire, :if => Proc { |animal| animal.sire_id }
validates_presence_of :dam, :if => Proc { |animal| animal.dam_id }
If instead they’re default 0, the condition becomes
animal.sire_id > 0
etc.
–
We develop, watch us RoR, in numbers too big to ignore.
Alfredo G. wrote:
validates_presence_of :sire, :if => Proc { |animal| animal.sire_id }
what is Proc?? i have to write the Proc method??
A Proc is a mini function that doesn’t have a name. You can pass them
around as parameters to methods. See:
http://www.ruby-doc.org/core/classes/Proc.html
Note that I incorrectly capitalized “proc”. You instead
have to write either
proc { |animal| animal.sire_id }
or
Proc.new { |animal| animal.sire_id }
–
We develop, watch us RoR, in numbers too big to ignore.
Mark Reginald J. wrote:
Alfredo G. wrote:
Use validates_presence_of instead of validates_associated.
the problem is that in some cases an Animals has not father or mother,
then how can i do it??
This should allow clones if your foreign_keys are default NULL:
validates_presence_of :sire, :if => Proc { |animal| animal.sire_id }
validates_presence_of :dam, :if => Proc { |animal| animal.dam_id }
If instead they’re default 0, the condition becomes
animal.sire_id > 0
etc.
–
We develop, watch us RoR, in numbers too big to ignore.
THanks a lot for your help,
what is Proc?? i have to write the Proc method??
i newbie in RoR sorry