Use of validates_uniqueness_of for create but not for edit

Hello People,

I wanted to validate my form for duplicate entries while creating a new
user . So I added validates_uniqueness_of in the users model. But it
gets applied to the edit user code also.

Since its an edit-user page, it should not validate duplicate records
and should update the existing record.Or say , is should have
validations of it own

I tried adding a validation function check_duplicate in the model and
called it before_create . But that gives errors.

Can anyone please help me for this.

Thanks n Regards

validates_uniqueness_of should validate on create and update, to achieve
some degree of uniqueness. Assuming your data is unique, am surprised
that your model is complaining.

Yukti V. wrote:

Hello People,

I wanted to validate my form for duplicate entries while creating a new
user . So I added validates_uniqueness_of in the users model. But it
gets applied to the edit user code also.

Since its an edit-user page, it should not validate duplicate records
and should update the existing record.Or say , is should have
validations of it own

I tried adding a validation function check_duplicate in the model and
called it before_create . But that gives errors.

Can anyone please help me for this.

Thanks n Regards

Thanks Bl Jj for putting your time.

before_create :check_duplicate

def check_duplicate
validates_uniqueness_of :login,:scope =>[:email], :case_sensitive
=> false
end

This is what I added to my model. Amd the error I get is

undefined method `validates_uniqueness_of’ for #User:0x3752c24

Is there any issue with the “check_duplicate” not getting values of
login and email.

regards.

Bl Jj wrote:

validates_uniqueness_of should validate on create and update, to achieve
some degree of uniqueness. Assuming your data is unique, am surprised
that your model is complaining.

On Jan 29, 2008 1:54 AM, Yukti V. [email protected]
wrote:

undefined method `validates_uniqueness_of’ for #User:0x3752c24

Is there any issue with the “check_duplicate” not getting values of
login and email.

I don’t know if you can use the validates_* methods in callbacks, so I
don’t
know whether it makes sense for you to have received that error.

My first instinct would be to try something like

validates_uniqueness_of :login, :on => :create, …

The TextMate snippet for validates_uniqueness_of adds an :on option, but
the
Rails API docs don’t list one. I don’t have time to actually try it all
out
here, but maybe you can use the :on option to indicate that the check
should
be made only on :create.

Regards,
Craig

That works !! Craig :))

Thanks allot!!!

regards
Yukti.Vig

Craig D. wrote:

I don’t know if you can use the validates_* methods in callbacks, so I
don’t
know whether it makes sense for you to have received that error.

My first instinct would be to try something like

validates_uniqueness_of :login, :on => :create, …

The TextMate snippet for validates_uniqueness_of adds an :on option, but
the
Rails API docs don’t list one. I don’t have time to actually try it all
out
here, but maybe you can use the :on option to indicate that the check
should
be made only on :create.

Hi,

The reason you’re getting this error is because the “validates”
functions are class level methods, whereas your check_duplicate function
is an instance method. So, to fix this, just reference the “validates_”
methods with the appropriate model name:

def check_duplicate
User.validates_uniqueness_of :login,:scope =>[:email], :case_sensitive
end

Craig D. wrote:

On Jan 29, 2008 1:54 AM, Yukti V. [email protected]
wrote:

undefined method `validates_uniqueness_of’ for #User:0x3752c24

Is there any issue with the “check_duplicate” not getting values of
login and email.

I don’t know if you can use the validates_* methods in callbacks, so I
don’t
know whether it makes sense for you to have received that error.

My first instinct would be to try something like

validates_uniqueness_of :login, :on => :create, …

The TextMate snippet for validates_uniqueness_of adds an :on option, but
the
Rails API docs don’t list one. I don’t have time to actually try it all
out
here, but maybe you can use the :on option to indicate that the check
should
be made only on :create.

Regards,
Craig