Mae ActiveRecord yn un o'r elfennau mwyaf pwerus o Rails, gan ei fod yn darparu ffordd hawdd o weithio gyda'r cronfeydd data. Un o'r nodweddion mwyaf defnyddiol yw'r "scopes", sy'n caniatáu i chi greu ymholiadau a allai gael eu hailddefnyddio yn eich cais. Yn yr erthygl hon, byddwn yn archwilio sut i ddefnyddio scopes yn ActiveRecord, gan gynnwys enghreifftiau a phwyntiau pwysig i'w hystyried.
Mae scope yn ffordd o ddiffinio ymholiad a allai gael ei ddefnyddio yn aml yn eich cais. Mae'n caniatáu i chi greu methodau sy'n dychwelyd set o gofrestriadau yn seiliedig ar feini prawf penodol. Mae hyn yn gwneud eich cod yn fwy darllenadwy ac yn lleihau'r posibilrwydd o gamgymeriadau.
I greu scope, gallwch ddefnyddio'r dull scope
yn eich model. Dyma enghraifft syml:
class Product < ApplicationRecord scope :available, -> { where(available: true) } end
Yn yr enghraifft hon, rydym wedi creu scope o'r enw available
sy'n dychwelyd pob cynnyrch sydd ar gael. Gallwch ei ddefnyddio fel hyn:
Product.available
Gallwch hefyd greu scopes sy'n derbyn paramau. Mae hyn yn caniatáu i chi wneud ymholiadau mwy penodol. Dyma enghraifft:
class Product < ApplicationRecord scope :by_category, ->(category) { where(category: category) } end
Yn yr enghraifft hon, rydym wedi creu scope o'r enw by_category
sy'n derbyn un param, sef category
. Gallwch ei ddefnyddio fel hyn:
Product.by_category('Electronics')
Gallwch hefyd ddefnyddio scopes gyda chydweithrediadau. Mae hyn yn caniatáu i chi greu ymholiadau mwy cymhleth. Dyma enghraifft:
class Order < ApplicationRecord has_many :products scope :with_products, -> { includes(:products) } end
Yn yr enghraifft hon, rydym wedi creu scope o'r enw with_products
sy'n cynnwys y cynhyrchion sy'n gysylltiedig â'r gorchymyn. Gallwch ei ddefnyddio fel hyn:
Order.with_products
Gallwch hefyd ddefnyddio scopes gyda chyfyngiadau. Mae hyn yn caniatáu i chi greu ymholiadau sy'n dychwelyd set benodol o gofrestriadau. Dyma enghraifft:
class Product < ApplicationRecord scope :recent, -> { where('created_at >= ?', 1.week.ago) } end
Yn yr enghraifft hon, rydym wedi creu scope o'r enw recent
sy'n dychwelyd pob cynnyrch a grëwyd yn ystod y wythnos ddiwethaf. Gallwch ei ddefnyddio fel hyn:
Product.recent
Gallwch hefyd ddefnyddio scopes gyda chymysgeddau. Mae hyn yn caniatáu i chi greu ymholiadau sy'n cyfuno sawl scope. Dyma enghraifft:
class Product < ApplicationRecord scope :available, -> { where(available: true) } scope :recent, -> { where('created_at >= ?', 1.week.ago) } end
Gallwch ddefnyddio'r ddau scope gyda'i gilydd fel hyn:
Product.available.recent
Mae defnyddio scopes yn ActiveRecord yn cynnig nifer o fanteision:
Mae scopes yn nodwedd pwerus yn ActiveRecord sy'n eich galluogi i greu ymholiadau sy'n hawdd eu defnyddio a'u hailddefnyddio. Trwy ddefnyddio scopes, gallwch wella darllenadwyedd eich cod, lleihau'r posibilrwydd o gamgymeriadau, a gwneud eich cais yn haws i'w gynnal a'i gadw. Mae'r enghreifftiau a'r technegau a drafodwyd yn yr erthygl hon yn cynnig sylfaen gadarn ar gyfer dechrau defnyddio scopes yn eich prosiectau Rails.
Felly, peidiwch ag oedi! Dechreuwch ddefnyddio scopes yn eich modelau ActiveRecord heddiw a mwynhewch y manteision a ddaw gyda nhw.
© 2024 RailsInsights. All rights reserved.