2013-08-19 14 views
7

Mam strukturę hierarchiczną dla modelu Board (zaimplementowano przy użyciu gemu przodków).Jedna tabela - dwa modele

Zamiast jednego modelu, a niektóre zakresy, chciałbym mieć dwa modele: Board elementów poziomu roota (ancestry wartość kolumna jest nil), a Category dla reszty (ancestry wartość kolumna jest not nil). Będą używać tej samej tabeli boards.

Jak mogę zrobić coś takiego?

Odpowiedz

10

Możesz explicity zdefiniować tabelę dla modelu przy użyciu set_table_name lub self.table_name w zależności od wersji rails. Ponadto można określić domyślny zakres dla każdego zapytania wykonanego dla tego modelu, używając default_scope, więc kombinacja obu powinno być to, czego szukasz:

class Category < AR:Base 
    self.table_name = 'boards' 
    default_scope where('boards.ancestry IS NOT NULL') 
end 
3

Można podać nazwę tabeli modelu kategorii i generować domyślny zakres:

class Category < ActiveRecord::Base 
    self.table_name = "boards" 
    default_scope where('boards.ancestry IS NOT NULL') 
end 

Powinieneś być w stanie współdziałać z obydwoma modelami z tablicami-tabelą.

Albo pozostajesz z jednym modelem i dodajesz dwa moduły dla konkretnych rzeczy. To zależy od twoich preferencji.

+1

Wow, dokładnie taka sama odpowiedź, hahaha, to było zabawne. – MurifoX

Powiązane problemy