Devise

8

ile TOS anlaşması ekleme onay kutusu Üyelerimiz için kullanacağız. Üye şemasına bir tos_agreement alanı (boolean) ekledik ve views/devise/registrations/new.html.haml'a ekledik. - Eğer TOS kabul etmezseniz, kayıt olamaz Düzgün çalışırDevise

validates_acceptance_of :tos_agreement, :allow_nil => false, 
    :accept => true 

şu şekildedir: Üye modelinde

, biz bir doğrulama kuralı var. Ancak, sorun ayarlarınızı düzenlemeyle birlikte gelir. /members/edit'a giderseniz, e-posta adresinizi veya şifrenizi değiştirebileceğiniz formu alırsınız. Bu noktada değiştirilememesi gerektiğinden TOS anlaşması için alan yok. Ancak, bir değişiklik yaptığınızda (örneğin, parolanızı değiştirdiğinizde) ve formu gönderdiğinizde, TOS sözleşmesinin yanlış olamayacağı konusunda bir hata iletisi döndürür.

İlk kayıttan sonra TOS sözleşmesini değiştirmeyi hiçbir zaman denememeyi nasıl söyleyebiliriz?

Düzeltme: Bu yüzden asıl sorun şudur: bizim attr_accessible tos_agreement, şimdi çok kötü bir fikir olduğunu düşünüyorum. Ancak, eğer kaldırırsak, Devise'yi, parametreyi kabul etmek ve kitle ataması olmasa bile bir şey yapmak için nasıl değiştirebiliriz?

+0

Ayrıca aslında bu tür için veritabanındaki bir alan oluşturmak gerekmez: sadece kayıt kontrol ediyor, böylece doğrulayıcı seçeneği yaratmak değişkenler, raylar sadece sizin için bir sanal alan yaratacaktır. http://guides.rubyonrails.org/active_record_validations.html#acceptance –

cevap

15

Bir geçirebilirsiniz: on =>:

validates_acceptance_of :tos_agreement, :allow_nil => false, :accept => true, :on => :create 
+1

Bu, doğru cevap olarak işaretlenmelidir. Bu sadece orijinal posterin sorusunu cevaplar. ve tam olarak ne OP için sordu. Eğer koşullar OP için daha sonra değiştiyse, bu kesin sorunuzu cevaplayan kişiye kredi vermek anlamına gelmez. – alybadawy