Because as an example
I have
Evaluation 1
- Question 1
- Question 2

If I edit question 2 and change the number it will allow me to do that
and it will show this
Evaluation 1
- Question 1
- Question 1

And that's what I want to avoid

I tried  validates_uniqueness_of :qnumber, :scope
=> :evaluation_id, :on => :create
and it works, but when I edit, I can do what I mention

On 4 nov, 11:42, Frederick Cheung <[email protected]> wrote:
> On Nov 4, 4:05 pm, JavierQQ <[email protected]> wrote:
>
>
>
> > I want that the data validates in 2 cases (create / update)
> > because when I want to update , for example:
>
> > Evaluation 1
> > - Question 1
>
> > If I update question 1 and change the content, and then I save
> > it shows a error message that says "The number is being used" (and
> > that shows that
> >  validates_uniqueness_of :qnumber, :scope  works)
> > I want that it only validates it when I'm CREATING a new one, not when
> > I'm UPDATING
>
> validations are fundamentally ignorant of what it is that has caused
> save to be called (i.e. it doesn't know what action, controller etc.
> There might not even be a controller if the code was being run from a
> background task).
>
> The validation methods do take an on option (:on => :create or :on
> => :update) but you should understand that this refers to whether
> active record is create or updating an object and has nothing to do
> with what controller action was involved.
>
> However, validates_uniqueness_of should already be adding a condition
> to the query so that when updating an existing object it doesn't find
> itself, so I'm not sure why you're running into this
>
> Fred
>
>
>
>
>
>
>
> > How can I do that?
>
> > On 4 nov, 10:55, Colin Law <[email protected]> wrote:
>
> > > On 4 November 2011 15:40, JavierQQ <[email protected]> wrote:
>
> > > > Hi
>
> > > > I hope someone can help me with this
>
> > > > I have a model Question, and its controller .. what I've done to
> > > > validate that there's no evaluation with 2 question with the same
> > > > number is
>
> > > >          validates_uniqueness_of :qnumber, :scope
> > > > => :evaluation_id
>
> > > > but when I try to update a question's content I got an error message
> > > > that says that "#{qnumber} has already been taken"
> > > > and that means that the validation works, but not as I want
>
> > > > Can I obtain wich "def" is using ? because I want to do this
> > > > - Question Model
>
> > > >           IF ("def create" or something)
> > > >                 do the validation
> > > >           elsif ("def update")
> > > >                 don't do it
> > > >          end
>
> > > I don't know what you mean by "def" but if you want to do conditional
> > > validations have a look at the Rails Guide on validations and it will
> > > show you how.
>
> > > Colin

-- 
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