Jak byście rozwiązali taki problem
Mamy newsy - smochodowe, nieruchomości, i powiedzmy moda. Każdy news ma kilka takich samych parametrów np. data dodania , opis, autor + parametry dodatkowe inne dla każdej kategorii newsa np dla samochodu marka model dla niieruchomości metraż i miejscowość itp.
Tabela NEWS
id
tytuł
opis
data_dodania
id_param_auto
id_param_estate
id_param_moda
Tabela param_auto
id
marka
model
id_news
Tabela param_estate
id
area
city
id_news
Tabela param_mode
id
color
size
id_news
i jak dodamy nowy news np motoryzacyjny to mamy
Tabela news
id | tytuł | opis | id_param_moto | id_param_estate | id_param_mode
1 Nowy samchód alfa romeo jakiś opis 1 0 0
Tabela param_moto
id |marka | model | id_news |
1 alfa romeo 159 1
Jak widzicie takie rozwiązanie ? a może byście to zrobili inaczej .
Jeżeli news jest tylko ALBO o samochodach, ALBO o modzie, ALBO o nieruchomościach, to lepszym pomysłem jest chyba zrobienie zamiast trzech pól:
id_param_auto
id_param_estate
id_param_moda
takiego czegoś np:
news_type: (i tutaj trzy możliwe wartości: auto/estate/moda)
param_id: id do rekordu z tabeli odpowiadającej typowi
To się zwie chyba asocjacje polimorficzne i opisane jest tu: http://guides.rubyonrails.org/association_basics.html#polymorphic-associations
Z góry mówię, że ja początkujący i lepiej żeby się ktoś bardziej doświadczony wypowiedział : P
Oki tylko co z parametrami takimi jak kolor, marka czy metraż i miejscowość gdzieś to trzeba trzymać a każdy artykuł ma odpowiednie parametry w zależności czy jest o samochodzie czy o nieruchomości
Nie o to mi chodzi : )
Wszystkie te tabele (param_auto, param_estate, param_mode) mają zostać, chodzi mi tylko o sposób odwoływania się do nich w modelu news : )
Przykładowo, jeśli dodajesz 1 news o jakimś samochodzie i 1 o nieruchomości to masz tak:
[code]Tabela news:
id | tytuł | opis | news_type | param_id
1 | Nowy samchód alfa romeo | jakiś opis | moto | 1
2 | Super chata | opis2 | estate | 1
Tabela param_moto:
id | marka | model
1 | alfa romeo | 159
Tabela param_estate:
id | area | city
1 | Mazowsze | Warszawa[/code]