Validacja instnienia zalacznika

Sytuacja wyglada tak ze w akcji show kontrolera galeria mam formularz do ladowania obrazkow z kontrolera images i nie bardzo mam pomysl jak validowac to czy tez zalacznik jest na prawde wybrany:

[code=ruby]

<%=h @gallery.name %>

<%= link_to 'Galleries', galleries_path %> » <%= link_to @gallery.name, @gallery %>

<%=h @gallery.description %>

<%= render :partial => @gallery.images.sort_by{|a| a[:shot_date_time]} %>

<% if current_user %>
<% form_for :image, :url => gallery_images_path(@gallery), :html => { :multipart => true } do |f| %>


<%= f.label “New Photo” %>

<%= f.hidden_field :who, :value => current_user.login %>
<%= f.hidden_field :gallery_id, :value => @gallery.id %>
<%= f.file_field :photo %>


<%= f.submit “Add Photo” %>


<% end %>
<% end %>[/code]
bo za zawartosc modelu image i tam ustawionej validacji photo nie reaguje, nie wiem czy jakis warunek w kontrolerze?

Nie bardzo rozumiem jak sobie w modelu ustaliłeś walidację photo, ja bym to po prostu zrobił tak, żeby sprawdzać rozmiar pobieranych danych. Jeśli ten rozmiar jest, to znaczy że jest też plik.

Proponuje uzyć http://github.com/technoweenie/attachment_fu/tree/master albo http://jimneath.org/2008/04/17/paperclip-attaching-files-in-rails/ , oba pluginy maja wbudowane walidacje.
BTW. Czepiam sie, ale te hidden_fields nie sa w cale potrzebne, dane mozesz odczytac z URLa i current_user.

@wijet
to nie czepianie, to nie jest bezpieczne, bo potencjalny hacker może łatwo zmienić wartości w hidden field i o ile nie są walidowane (a pewnie nie sa, bo wtedy by były zbędne, bo jak mówisz można dane z sesji odczytać), to można komuś do galerii wstawić zdjęcie.

Tak samo moze zmienic id galerii w formularzu. Czy sie uzywa hidden_field czy params[:gallery_id] walidacja powinna byc. Chodzilo mi bardziej o styl.

no wiem ale to wewnetrzna aplikacja monitorowana i z dostepem kilkudziesieciu userow wiec moze byc jak jest

uzywam peperclipa do tego ale jest to w modelu images a probuje to robic w galleries wiec nie wiem jak sie do tej walidacji odwalac bo jak robie ja z images to jest ok dziala i reaguje, a to w galleries mam sam formularz do images wstawiony i tu mi z walidacji nie chce korzystac

Co robisz w galleries? Troche nie rozumiem problemu, walidowanie i tworzenie obrazka masz w ImagesController#create (i tam dodajesz usera i galerie). Skoro formularz prowadzi do tej akcji, wszystko powinno byc ok. Pokaz jeszcze troche kodu z kontrolera.

Aplikacje wewnętrzne powinny być jeszcze lepiej zabezpieczone niż aplikacje publiczne, bo w nich to się dopiero newralgiczne dane trzyma. Jeśli dowolny intern “niechcący” (przysłany przez konkurencyjną firmę) poryje aplikację i wyciągnie z niej ważne informacje używając zaledwie firebuga, klient zrobi Ci z dupy jesień średniowiecza i przeczołga po sądach.
Także jak Ci na forum ktoś mówi że to niebezpieczne i powinno się to zrobić bardziej koszernie, to zdrowo będzie posłuchać :wink: