Kilka pytań w jednym topicu

Hej! Przerabiam sobie http://guides.rubyonrails.org/v4.0.8/getting_started.html i czasami zdarza mi się, że nie rozumiem fragmentu kodu.

A. W config/routes.rb “resources : posts” - może mi ktoś to dokładnie wytłumaczyć na chłopski rozum, co tutaj się właściwie dzieje po wpisaniu tego? Czemu mi to nie działa jak tego nie ma? Rozumiem to mniej więcej w taki sposób, że deklaruje, że klasa “post” będzie jakoś oddziaływać z bazą danych, ale nie wiem czy to jest poprawne…

B. kod w controller:

class PostsController < ApplicationController
def new
end

def create
@post = Post.new(post_params)
@post.save
redirect_to @post
end

def show
@post = Post.find(params[:id])
end

private
def post_params
params.require(:post).permit(:title, :text)
end
end

a) po co mi @ przy klasie post, co by było gdyby tego nie było - do czego to służy?
b) @post = Post.find(params[:id]) - “params[:id]” - o co chodzi z tymi parametrami i czemu jak kiedyś próbowałem wpisać co innego niż :id to mi wywalało błąd
c) o co chodzi z tym “private”, gdzieś wyczytałem, że metody mogą być public, private i protected. Tylko co to dokładnie znaczy?

C. Co to jest config/database.yml (co to w ogóle za format), bo baza danych jest np. w db/development.sqlite3

D. Stworzyłem pare postów przez formularz, który łączył się z bazą danych sqlite3. Otworzyłem bazę danych w Database Browser for SQLite i widzę dla tabeli posts, title typ varchar(255). Dlaczego mogę wyświetlić więcej niż 255 znaków? Myślałem, że jest to ograniczenie. Jak nie ograniczenie, to co to jest? (wiem, że mogę zrobic validates, ale chodzi mi konkretnie o to), tak samo mogę wyświetlić na stronie www przy pomocy deklaracji też więcej niż 255 znaków posta.

http://www.tutorialspoint.com/sql/sql-data-types.htm

Mam nadzieję, że nikt nie będzie się urażony, że pytam tak wprost o tyle rzeczy na raz (zamiast np. tworzyć wiele tematów) albo nie jest to zbyt banalne…

Dziękuję za każda pomocną odpowiedź
Pozdrawiam!

ogarnij najpierw jakiś toturial czystego ruby a dopiero bierz się za railsy żebyś miał jakiekolwiek podstawy bo na “ślepo” nic sensownego nie stworzysz. a database.yml to plik konfiguracyjny do łączenia się z baza danych.

Odpowiedzi na A, B i C znajdziesz na https://www.railstutorial.org/book (polecam!).

Odpowiedź na D znajdziesz jeśli spróbujesz zapisać w tym polu jakiś string dłuższy niż 255 znaków.

@sharnik - chyba chodzi o to, że @Hubert_Ruby zapisał string dłuższy niż 255 znaków w varchar(255). To taka ciekawostka sqlite, że pole varchar jest traktowane jako text i możesz sobie wpisać nawet milion znaków dla pola varchar(5) :smile:

dzięki za info o database.yml :smile: oraz ciekawostkę z varchar w sqlite.

A dowiedziałem się, że jest to zadeklarowanie, że będzie użyty standard REST
(https://www.railstutorial.org/book/demo_app#sidebar-REST punkt 2.2) i automatycznie będzie przekierowywać zgodnie z tamtą tabelą

B a) http://stackoverflow.com/questions/14319347/variables-in-ruby-on-rails (czyli z @ to zmienna bez ograniczeń stosowania)
b) tu trochę nie jestem pewien, bo http://s5.ifotos.pl/img/paramspng_eqexnaa.png myślałem, że na podstawie tego jak wpisze coś innego niż “:id” np. “:title”, to będzie mi szukało wg title, ale to musiałbym chyba zadeklarować w routes, bo domyślnie resources :post nie będzie mi tego deklarował
c) http://i.stack.imgur.com/SFysv.jpg czyli dotyczy to ograniczania stosowania z np. klas zewnętrznych :smile:

dzięki za pomoc :slight_smile: