Phoenix Framework, Rails'da bulunanlar gibi herhangi bir tür geri arama filtresi kullanıyor mu? Ben değişikliklerin doğrulamak mümkün olduğunu biliyorum, ancak before_create
, before_save
ve after_commit
gibi eylemleri uygulamak için yollar arıyorum.Phoenix Framework geri aramaları
cevap
Ecto yapar: https://hexdocs.pm/ecto/#!Ecto.Model.Callbacks.html
Onlar Raylar olanlardan göze hitap eden farklıdır: aldıkları ve changesets dönmelidir (e-posta ve ne değil göndermelerini kullanmayın) veri tutarlılığı için kullanılmalıdır.
Ecto 2.0'dan, geri aramalar tamamen kaldırılmıştır.
Peki şimdi geri aramaları nasıl ele alalım? İşte,
'un iki yolu vardır. before_
geri aramaları için Changeset'u kullanabilirsiniz. Kaldırılan yerlerin nedenlerinden biri, birçok geliştiricinin, değişikliklerin yeterli olduğu birçok durumda geri aramalara güvendiğidir. Yani basitçe, senin Changeset için
def changeset(post, params \\ :empty) do
post
|> cast(params, @required_params, @optional_params)
|> validate_length(:title, min: 3)
|> validate_length(:metadata, min: 3)
|> implement_a_before_callback
end
def implement_a_before_callback(changeset)
#Apply required actions and return Changeset
end
başka yolu gerekli işlevi uygulamak birlikte Ecto.Multi kullanarak grup birden repo işlemleri etmektir. Dokümanlar
Ecto.Multi mümkün (tek bir veritabanı işlemde) birlikte yapılmalıdır ve aslında bunları gerçekleştirmeden sıraya işlemleri kendi içimize bakmak için bir yol sağlar olmalıdır işlemleri paketi kolaylaştırır. Her operasyona benzersiz bir isim verilir ve sonucunu belirleyecektir ya da meydana gelmesi durumunda başarısızlığın yerini belirlemeye yardımcı olacaktır. Dolayısıyla, bir grup veri ile ilgili işlemlerin bir kerede
Multi
'u kullanmasını istediğinizde,before_
veafter_
geri aramaları burada değiştirilebilir.
Bir örnek bu veri ile ilgili sorguları yürütmek ve diğer görevleri bir e-seviyorsunuz gerektiğini hatırlamak You have
result = Repo.transaction(Service.password_reset(account, params))
kullanılarak
# In defmodule Service
def password_reset(account, params) do
Multi.new
|> Multi.update(:account, Account.password_reset_changeset(account, params))
|> Multi.insert(:log, Log.password_reset_changeset(account, params))
|> Multi.delete_all(:sessions, assoc(account, :sessions))
end
Çalıştır olurdu. Bunun için sonuca basitçe eşleme yapabilir ve uygun eylemi gerçekleştirebilirsiniz. Bazı hata mesajı işlem başarılı olmuşsa, bir posta göndermek ve görüntülemek istedik oturdu Lets değilse
case result do
{:ok, %{account: account, log: log, sessions: sessions}} ->
# Operation was successful, perform actions like sending a mail
{:error, failed_operation, failed_value, changes_so_far} ->
# One of the operations failed. Raise error message
end
Kaynak:
Bu yoldur! Kabul edilen cevap güncel değil. – LukeS
- 1. Ajax senkron geri aramaları
- 2. Phoenix framework - Özel değişiklikler onaylar
- 3. Phoenix Framework ve AngularJS şablonları
- 4. ASP.NET - Ajax.BeginForm OnSuccess geri aramaları
- 5. Coinbase adres geri aramaları çalışmıyor?
- 6. mongid gömülü belge geri aramaları
- 7. Phoenix framework ile e-postalar nasıl gönderilir
- 8. NPM Phoenix Framework ile hata kurun
- 9. Phoenix framework ile SASS/SCSS nasıl kullanılır?
- 10. Raylar çocuklar geri aramaları ebeveyni güncellendiğinde çocuklar geri aramaları ateş edilmez tuhaf sorunu çalıştırıyorum
- 11. jQuery geri aramaları için "this" nasıl bağlanır?
- 12. Raylar jQuery UJS geri aramaları tetiklemiyor
- 13. jQuery geri aramaları, başarısızlıkla ilgili olarak tekrarlanıyor?
- 14. React.js, geri aramaları alt bileşenlere nasıl iletir?
- 15. GWT JSNI geri aramaları destekliyor mu?
- 16. iPhone web uygulamalarında OAuth geri aramaları
- 17. jQuery geri aramaları içinde ana nesneyi alın
- 18. Eski geri aramaları yakalamak için lambdaları geçirin
- 19. Phoenix
- 20. phoenix
- 21. Phoenix Framework: tanımsız işlev LetsPlan.Event.fetch/2. Ama getirme işlevi yerde
- 22. C++: Sınıf üyesi işlev geri aramaları olarak işlevler
- 23. Spring AOP yinelemeli aramaları
- 24. Aramaları WCF'de birleştirmek mümkün mü?
- 25. Django'da özel Alan Aramaları oluşturma
- 26. Heroku üzerinde Ölçekleme phoenix
- 27. Phoenix birincil anahtarlar
- 28. Denetleyicinin yanıtını phoenix
- 29. Yeni Phoenix projesi bulunamadı:
- 30. Phoenix kimliği nasıl özelleştirilir
sayfa "Uyarı: Ecto geri aramaları kullanımdan kaldırılmıştır" diyor. Bu yöntem muhtemelen – coderVishal
Evet önerilmez ve tamamen Ecto 2.0'dan kaldırılmıştır. İşte bazı kararları açıklayan blog yazısı: http://blog.plataformatec.com.br/2015/12/ecto-v1-1-yayınlanmış-ve-ekto-v2-0-planları/ –
Başka bir bakış açısı (Rails'den geliyorsanız): http://cloudless.pl/articles/ 11-model-geri-phoenix-ekto-and-raylar –