Ich schreibe eine Funktion, die bei der Aktualisierung eines Attributs eines Modells den Status is_kyc_verified
auf false setzt. HierWas ist der richtige Weg, um eine Funktion zu implementieren, die in Rails den Wert auf false zurückgibt?
ist der Code des User-Modell und die Methode, die den Status ändert:
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
before_update :change_kyc_status, unless: :is_kyc_verified_changed?
#Associations
has_one :address, dependent: :destroy
has_one :kyc, dependent: :destroy
has_one :pan_detail, dependent: :destroy
has_one :document, dependent: :destroy
has_many :nominee_details, dependent: :destroy
has_many :bank_details, dependent: :destroy
#Accept Attributes for associated model
accepts_nested_attributes_for :address, :kyc, :pan_detail,
:document, :nominee_details, :bank_details,
allow_destroy: true, reject_if: :all_blank
#validates
validates :name, :mobile_no, :gender, :dob, presence: true
validates :mobile_no, numericality: true, length: { is: 10 }
private
##
# Check if is_kyc_verified is set to true
# if 'yes' then alert user and set is_kyc_verified to false
def change_kyc_status
self.is_kyc_verified = false if self.valid? and self.is_kyc_verified.present?
true
end
end
Verfahren zunächst verwendet, um die self.is_kyc_verified
zurückzukehren, was falsch war, wiederum führte zu „Rollback der Transaktion“. Ich habe am Ende explizit ein True hinzugefügt, damit die Transaktion nicht zurückgesetzt wird.
Ich denke jedoch, dass dies nicht der richtige Weg ist, um diese Funktion zu implementieren. Können Sie bitte meinen Code überprüfen und den richtigen Weg vorschlagen?
Dies scheint der richtige Weg zu sein, es zu tun. – SreekanthGS
'is_kyc_verified' ist ein Flag, das anzeigt, dass der Kunde seine Kundendaten bestätigt hat. Aber wenn er seine persönlichen Informationen wieder bearbeitet, d. h. nachdem er verifiziert wurde, muss er seine Daten erneut verifizieren, daher muss ich "is_kyc_verified" auf false setzen, wenn er irgendwelche Informationen aktualisiert. – VoidZero
Übrigens wird in Ihrer Lösung auch 'return' verwendet, andernfalls wird' false' zurückgegeben. – VoidZero