/ / Refaktoryzacja następującego kodu? - Ruby-on-Rails, Ruby-On-Rails-4

Refaktoryzacja następującego kodu? - Ruby-on-Rails, Ruby-On-Rails-4

Mam dwa modele bloga i komentarz. Blog zawiera wiele komentarzy, komentarz może należeć tylko do jednego bloga.

Do wyświetlania interfejsu API podobnego blog / 2 / comment / 1

Muszę użyć następującego kodu wewnątrz kontrolera komentarzy

def show
@blog = Blog.find(params[:blog_id])
@comments = @blog.comments
@comment = @comments[params[:id].to_i - 1]
end

Czuję, że ten kod jest dość akward, zwłaszcza ten ostatni @comments[params[:id].to_i - 1]. Muszę przekonwertować parametr id na liczbę całkowitą, a następnie zmienić na indeks tablicy na 0. Każdy proces refaktoryzacji może się tu zdarzyć

Odpowiedzi:

0 dla odpowiedzi № 1

Czy masz na myśli, aby wyglądać bardziej "Rails"? Lubię to?

def show
@blog = Blog.find(params[:blog_id])
@comment = @blog.comments.find params[:id]
end

Zgodnie z komentarzem OP. Twoja transformacja jest niezbędny. Możesz jednak uniknąć ładowania całego zestawu komentarzy i brać tylko to, czego potrzebujesz.

@comment = @blog.comments.offset(params[:id].to_i - 1).limit(1)