Rails Insights

Gwirfoddoli Custom yn Rails

Mae Rails, y fframwaith datblygu gwe poblogaidd ar gyfer Ruby, yn cynnig dulliau cryf ar gyfer rheoli data a chynnal cywirdeb. Un o'r nodweddion pwysicaf yw'r gallu i greu gwirfoddoliadau custom, sy'n caniatáu i ddatblygwyr sicrhau bod y data a dderbynnir gan y cais yn cwrdd â gofynion penodol. Yn yr erthygl hon, byddwn yn archwilio sut i greu gwirfoddoliadau custom yn Rails, gan ddefnyddio enghreifftiau cod a phrosesau clir.

Beth yw Gwirfoddoli?

Mae gwirfoddoli yn broses sy'n sicrhau bod data a dderbynnir gan fodelau yn cwrdd â gofynion penodol cyn iddynt gael eu cadw i'r gronfa ddata. Mae Rails yn cynnig sawl dull gwirfoddoli, gan gynnwys:

  • Gwirfoddoliadau adeiladol (built-in validations)
  • Gwirfoddoliadau custom

Mae gwirfoddoliadau adeiladol fel validates_presence_of a validates_uniqueness_of yn ddefnyddiol, ond weithiau mae angen mwy o reolaeth. Dyma ble mae gwirfoddoliadau custom yn dod i'r amlwg.

Sut i Greu Gwirfoddoliadau Custom

Mae creu gwirfoddoliadau custom yn Rails yn syml. Mae angen i chi ddilyn y camau canlynol:

Cam 1: Creu Model

Yn gyntaf, bydd angen i chi greu model. Gadewch i ni gymryd enghraifft o fodel User.

class User < ApplicationRecord
  # Gwirfoddoliadau custom yma
end

Cam 2: Ychwanegu Gwirfoddoliad Custom

Yna, gallwch ychwanegu gwirfoddoliad custom. Mae hyn yn cael ei wneud trwy ddefnyddio'r dull validate. Dyma enghraifft o wirfoddoliad sy'n sicrhau bod y cyfenw yn dechrau gyda llythyren fawr:

class User < ApplicationRecord
  validate :surname_starts_with_capital

  private

  def surname_starts_with_capital
    unless surname[0] =~ /[A-Z]/
      errors.add(:surname, "dylai'r cyfenw ddechrau gyda llythyren fawr")
    end
  end
end

Yn yr enghraifft hon, rydym wedi creu dull private o'r enw surname_starts_with_capital sy'n gwirio'r cyfenw. Os nad yw'n dechrau gyda llythyren fawr, rydym yn ychwanegu neges gwall i'r errors.

Cam 3: Defnyddio'r Gwirfoddoliad

Pan fyddwch yn creu neu'n diweddaru defnyddiwr, bydd y gwirfoddoliad custom yn cael ei weithredu. Dyma sut y gallai edrych:

user = User.new(surname: "smith")
if user.valid?
  user.save
else
  puts user.errors.full_messages
end

Os yw'r cyfenw yn dechrau gyda llythyren fawr, bydd y defnyddiwr yn cael ei gadw. Os nad yw, bydd y neges gwall yn cael ei harddangos.

Gwirfoddoliadau Custom gyda Paramedrau

Gallwch hefyd greu gwirfoddoliadau custom sy'n derbyn paramedrau. Dyma enghraifft sy'n gwirio a yw'r oedran yn y ffin benodol:

class User < ApplicationRecord
  validate :age_within_range

  private

  def age_within_range
    if age < 18 || age > 65
      errors.add(:age, "dylai fod rhwng 18 a 65")
    end
  end
end

Yn yr enghraifft hon, rydym yn gwirio a yw'r oedran yn y ffin rhwng 18 a 65. Os nad yw, rydym yn ychwanegu neges gwall i'r errors.

Gwirfoddoliadau Custom gyda Dulliau Gwirfoddoli

Gallwch hefyd ddefnyddio dulliau gwirfoddoli eraill i greu gwirfoddoliadau mwy cymhleth. Dyma enghraifft sy'n gwirio a yw'r cyfenw a'r enw cyntaf yn gyfatebol:

class User < ApplicationRecord
  validate :surname_matches_first_name

  private

  def surname_matches_first_name
    if surname.downcase == first_name.downcase
      errors.add(:surname, "dylai'r cyfenw fod yn wahanol i'r enw cyntaf")
    end
  end
end

Mae'r enghraifft hon yn gwirio a yw'r cyfenw a'r enw cyntaf yn gyfatebol, gan ychwanegu neges gwall os ydynt yn cyfateb.

Gwirfoddoliadau Custom gyda Regex

Gallwch hefyd ddefnyddio regex i wirfoddoli data. Dyma enghraifft sy'n gwirio a yw'r cyfeiriad e-bost yn gywir:

class User < ApplicationRecord
  validate :email_format

  private

  def email_format
    unless email =~ /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
      errors.add(:email, "dylai fod yn gyfeiriad e-bost dilys")
    end
  end
end

Mae'r enghraifft hon yn defnyddio regex i wirio a yw'r cyfeiriad e-bost yn gywir. Os nad yw, bydd neges gwall yn cael ei ychwanegu.

Gwirfoddoliadau Custom gyda ActiveModel

Os ydych chi'n gweithio gyda ActiveModel, gallwch greu gwirfoddoliadau custom yn yr un ffordd. Dyma enghraifft sy'n dangos sut i wneud hyn:

class User
  include ActiveModel::Model

  attr_accessor :surname, :first_name

  validate :surname_matches_first_name

  private

  def surname_matches_first_name
    if surname.downcase == first_name.downcase
      errors.add(:surname, "dylai'r cyfenw fod yn wahanol i'r enw cyntaf")
    end
  end
end

Mae'r enghraifft hon yn dangos sut i ddefnyddio ActiveModel i greu gwirfoddoliadau custom yn y model.

Casgliad

Mae gwirfoddoliadau custom yn Rails yn cynnig dulliau pwerus i sicrhau bod data yn cwrdd â gofynion penodol. Trwy ddefnyddio'r dulliau a ddisgrifiwyd yn yr erthygl hon, gallwch greu gwirfoddoliadau sy'n addas ar gyfer eich cais. Mae'r gallu i greu gwirfoddoliadau custom yn gwneud Rails yn fframwaith hyblyg a chryf ar gyfer datblygu gwe.

Gobeithio bod yr erthygl hon wedi bod o gymorth i chi ddeall sut i greu gwirfoddoliadau custom yn Rails. Peidiwch ag oedi i archwilio a chreu eich gwirfoddoliadau eich hun!

Published: August 13, 2024

© 2024 RailsInsights. All rights reserved.