Rails'de kullanıcıların resim yüklemelerine izin veren temel bir fotoğraf galerisi sitesi geliştiriyorum. Kullanıcı kimlik doğrulaması için Devise kullanıyorum. Görüntü modelimin, bir kullanıcının yüklendiği sırada geçerli kullanıcının kimliğinin kaydedildiği bir alan vardır.Raylar - ActiveRecord veritabanı sorgusunda current_user.id kullanın
İşte denetleyicisi yöntemi oluşturmak var:
def create
@image = Image.new(image_params)
@image.uid = current_user.id
if @image.save
redirect_to @image
end
end
Sonra görünümünde ben uid geçerli kullanıcının kimliğiyle eşleşen hangi veritabanında tüm görüntüleri almak istiyorum (yani akımın bütün görüntüler kullanıcının görüntüleri). Şu anda var: Böyle current_user.id sadece nil döndürmesi nedeniyle
<% Image.where("uid == current_user.id") do |image|%>
<div class="col-lg-3 col-md-4 col-xs-6 thumb">
<a class="thumbnail" href="#">
<!--<img class="img-responsive" src="<%image.image_url%>" alt="">-->
<%= image_tag image.image_url(:thumb) %>
</a>
</div>
<% end %>
Ancak hiçbir görüntü sergilenmektedir sanırım.
ActiveRecord veritabanını current_user.id değerini kullanarak sorgulamak mümkün mü?
Mükemmel! Bunu bir parametre ile denedim, ancak sonuçların içinden geçecek bir diziye atamak zorunda olduğunun farkında değildim. Teşekkürler! –
@AdamLazarus Bunları bir diziye atamanız gerekmez. Todd'un burada gösterdiği şey, current_user.id'de düzgün bir şekilde nasıl geçeceğidir. Örneğinizde, bir dizge olarak kod yazdınız, bu nedenle sorgunuz, "uid" in "current_user.id" 'dizgesine eşit olduğu kayıtları bulmaya çalışıyor. Geçerli kodunuz, bir değişkene ilk önce atamadan çalışacaktır, aksi halde '' '' '' 'argümanlar bu gibi görünür -' 'uid =?', Current_user.id' (Todd'un işaret ettiği gibi) ya da bunun gibi - "" uid = # {current_user.id} "'. Todd's gitmek için en iyi yoldur çünkü SQL Injection'dan korur. – jeffdill2