Raylar 4: before_filter ve before_action


340

Raylar ise> 4.0.0 jeneratörler ile CRUD işlemleri oluşturur before_actiondeğil before_filter. Aynı şeyi yapıyor gibi görünüyor. Peki bu ikisi arasındaki fark nedir?

Yanıtlar:


521

Biz gibi bakın yılında ActionController::Base, before_actionsadece bir olan yeni sözdizimi için before_filter.

Ancak, tüm before_filterssözdizimi artık yok içinde Raylar 5.0 ve kaldırılacaktır Raylar 5.1


42
Bir yandan tasvir etme mantıklıdır, öte yandan raylarda ve yakutta bir yöntem için çeşitli takma adlara sahip olmak için iyi bir uygulama vardır, böylece onu anlam kaybı olmadan farklı bağlamlarda kullanabilirsiniz.
freemanoid

4
4.2'de bunu reddetmiyorlar, ama cesaretini kırdığı için dokümanlardan çıkarıyorlar. edgeguides.rubyonrails.org/…
onetwopunch

17
Eğer cesaretiniz kırılırsa, neden onu itiraz etmiyorsunuz ? Aptal.
Grant Birchmeier

4
@JohnWhitley - kullanımdan kaldırma API'yı bozmaz. Bu, tüm kullanımdan kaldırılma noktası.
Grant Birchmeier

9
@JohnWhitley - Spam gönderme bir nedenden dolayı. İyi disiplinli herhangi bir proje, kullanımdan kaldırılmış işlevleri kullanmadan kullanımdan kaldırma uyarılarını ele almalıdır .
Grant Birchmeier

67

Sadece sözdizimi farkı, raylar uygulamasında CRUD vardır ve temelde ad dizinine göre yedi eylem , yeni , oluştur , göster , güncelle , düzenle , yok et .

Değişim sözdizimi dost 4 yapmak o geliştirici raylar filtreden önce hiç eylemden önce .

before_action çağrı yöntemi beyan ettiğimiz eylemlerden önce, gibi

before_action :set_event, only: [:show, :update, :destroy, :edit]

set_event , her zaman göster, güncelle, düzenle ve yok etmeden önce çağıracak bir yöntemdir.


31

Bu sadece bir isim değişikliğidir. before_actiondaha belirgindir, çünkü bir eylemden önce yürütülür.


1

before_filter / before_action: herhangi bir eylem yürütülmeden önce yürütülecek herhangi bir şey anlamına gelir.

İkisi de aynı. davranışları aynı olduğu için birbirlerinin takma adıdır.


-3

Before_action ve before_filter arasındaki farkın ne olduğunu anlamak için, işlem ve filtre arasındaki farkı anlamalıyız.

Eylem, yönlendirebileceğiniz bir denetleyicinin yöntemidir. Örneğin, kullanıcı oluşturma sayfanız UsersController # new adresine yönlendirilebilir - bu rotadaki eylem yeni.

Filtreler, denetleyici eylemleriyle ilgili olarak çalışır - bunlardan önce, sonra veya etrafında. Bu yöntemler, denetleyicideki her eyleme ortak veriler yeniden yönlendirerek veya ayarlayarak eylem işlemeyi durdurabilir.

Raylar 4 -> _action

Raylar 3 -> _filter

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.