Güncel_kullanıcıya current_user öğesini ayarlamak için bir after_save geri çağrısı kullanmak istiyorum. Ancak current_user modelde mevcut değil. Bunu nasıl yapmalıyım?after_save geri arama current_user sütununu current_user olarak ayarlamak için geri arama
6
A
cevap
8
Denetleyicide tutmanız gerekir. Önce, modeldeki kaydetme işlemini yapın, ardından kayıt alanını başarılı bir şekilde güncelleyin.
Örnek
class MyController < ActionController::Base
def index
if record.save
record.update_attribute :updated_by, current_user.id
end
end
end
diğer alternatif (Bunu tercih ederim) mantığı sarar Modelinizdeki özel bir yöntem oluşturmaktır. Ben touch
sadece does damgalarını kullanıcılar değil, kimliği söyleyebilirdi Örneğin
class Record < ActiveRecord::Base
def save_by(user)
self.updated_by = user.id
self.save
end
end
class MyController < ActionController::Base
def index
...
record.save_by(current_user)
end
end
1
ben kadarıyla, Simone Carletti'nin tavsiyesi dayalı bu monkeypatch uyguladık. Bununla ilgili yanlış bir şey var mı? Bu, current_user
numaralı cihazla çalışmak üzere tasarlanmıştır. Sonra
class ActiveRecord::Base
def save_with_user(user)
self.updated_by_user = user unless user.blank?
save
end
def update_attributes_with_user(attributes, user)
self.updated_by_user = user unless user.blank?
update_attributes(attributes)
end
end
Ve create
ve update
yöntemleri şöyle bu çağrı:
@foo.save_with_user(current_user)
@foo.update_attributes_with_user(params[:foo], current_user)
İlgili konular
- 1. JADANAL CANCEL geri arama AJAX geri arama?
- 2. Geri arama
- 3. current_user, Devise
- 4. açısal geri çağrılabilir geri arama
- 5. Geri arama yönlendirmesi oturumu korumalı değil
- 6. Kereviz için geri arama apply_async
- 7. Animasyon Geri Arama (iPhone)
- 8. 1 veya 2 geri arama kullanarak geri arama işlevi?
- 9. Tanımlanmamış geri arama alın
- 10. Animasyon Sonrası Geri Arama?
- 11. Bootbox geri arama düzgün
- 12. Yazma geri arama fonksiyonları
- 13. 'Geri arama' var mı?
- 14. javascript'te geri arama yapma
- 15. Geri arama Twitter
- 16. WCF geri arama + WF4
- 17. Geri arama eğitimi
- 18. geri arama işlevi anlamı
- 19. Promise geri arama
- 20. Ateşleme geri arama
- 21. Ehcache ve Geri arama
- 22. ThreadPool geri döngüde geri arama -% 100 CPU
- 23. angularfire, geri alınan veriler hakkında geri arama
- 24. Kovboy dinlenmesi resource_exists geri arama
- 25. Yönlendirme İçinde AJAX Geri Arama
- 26. Raylar: current_user dışındaki rastgele kullanıcıları seçme
- 27. Açısal iletişim kuralı içinde geri arama iletişim kutusu nasıl beklenir Geri arama geri çağırma
- 28. açısal acsess 'this' geri arama
- 29. NodeJS'de geri arama işlevi, Object
- 30. FFI Haskell Geri Arama Durumu
+1 dokunmatik yöntemi için :) – lucapette
nedeni modelinde koyarak için (Kaydet beri, KURU olmasıdır) sadece bir kontrolör değil, uygulamada birçok yerden çağrılabilir. Bunu bir kez yapmayı ve kendimi tekrar etmemeyi ve bunu yapmayı her zaman hatırlamaktan endişe etmeyi tercih ederim. – pixelearth
Ardından, Model.save_from_user (kullanıcı) gibi yeni bir yöntem oluşturun ve kaydı kaydetmek ve dokunuşu gerçekleştirmek için mantığı yerleştirin. Ardından, kontrolörünüzde bu yöntemi “current_user” parametresini argüman olarak geçirin. –