Named_scope?

Witam,

Mam dwa model:

developments> has_many :requests
request> belongs_to :development

W modelu request mam pole accepted, które przyjmuje wartość true lub false.

Jak zrobić aby konstrukcja

if @development.accepted? #pokaz link else #nie pokazuj linka end
w widoku show pokazywała link do ściągnięcia pliku w zależności czy pole accepted jest true lub false?

Pozdrawiam

Hmm, no właśnie można to zrobić tak jak napisałeś. Można to ładnie skrócić idiomem:

jakiś link  if @development.accepted?

Ewentulanie użyć link_to_if, który tworzy link jeśli warunek jest spełniony, lub tekst, jeśli nie.
http://railsapi.com/doc/rails-v2.3.3.1/classes/ActionView/Helpers/UrlHelper.html#M002372

Ale jak dodam taka konstrukcje to mam info że undefined method `accepted?’

A w kontrolerze mam:

def accepted? Development.find_by_id(params[:id]).requests.find_by_user_id_and_accepted(current_user, true) end

A może lepiej dać w kontrolerze -> show

[code=“ruby”]def show
@development = Development.find(params[:id])
@download_accepted? = Development.find_by_id(params[:id]).requests.find_by_user_id_and_accepted(current_user, true)

respond_to do |format|
  format.html
end

end[/code]
a potem w widoku:

jakiś link if @download_accepted?

Po pierwsze primo - czy “acceptowane” są Developmenty czy Requesty?
Po drugie primo - jeśli masz pole (boolean) “accepted” w tabeli, to w MODELU masz metodę “accepted?”

(wierzę, że zaczyna się klarować)

Pierwsze primo: akceprtowane sa requesty.
Drugie primmo nie mam metody accepted w modelu. Powinna ona być w modelu development czy request?

Kurczę, no nie rozumiem. :confused: Jeżeli to requesty mogą być accepted, to co rozumiesz przez development accepted?

Hmm, no właśnie co ja przez to rozumiem.
Oj chyba źle kombinuje bo widzę ze faktycznie nie developmenty sa akceptowane tylko requesty.

Czyli powinno iśc w strone @development.requests.accepted?

Ogólnie To mam model Development i model Request
Request: development_id, user_id, accepted

i jesli request ma accepted = true dla danego developmentu i danego usera to ma zwracać true.

i wtedy

if _nie_wiem_co then
pokaz link
else
nie pokazuj linka
end

W widoku chcesz wyświetlić informacje o wybranym developmencie i listę requestów, ale link do ściągnięcia pliku tylko jeśli accepted == true i user_id == current_user.id?

Tak. Ale nie bedzie tam listy requestow tylko jeden request takie jest założenie. Jeśli wyskoczy więcej to jest błąd.
Tylko jeden request moze byc accepted dla danego developmetu i usera.

user_1, dev_1, TRUE - OK <,
user_2, dev_1, TRUE - OK |
user_1, dev_2, TRUE - OK |
user_1, dev_1, TRUE - FAIL /