Relacja wiele do wielu tego samego modelu

Siemka,

class Node < ActiveRecord::Base end
Musze zaimplementowac replacje wiele do wielu na tymze modelu, czyli jeden wezel moze nalezec do wielu wezlow i vice versa, w wersji has_many :through => ...
.

Jak mam nazwac tabele laczaca ? I jak nazwac jej klucze obce ?

./script/generate model node_node node_id:integer node_id:integer

przeciez nie przejdzie…

Pozdrowienia

acts_as_tree

Jak w drzewie mam zaimplementowac ze jeden wezel ma wielu rodzicow ?

http://szeryf.wordpress.com/2007/06/27/self-referential-many-to-many-relations-in-ruby-on-rails/- ktoś (z Polski, może jest tu na forum i ma teraz lepsze rozwiązanie?) miał taki problem i opisał jak sobie z nim poradził

[code]class Chunk < ActiveRecord::Base

has_many :left_bindings, :foreign_key => “left_chunk_id”,
:class_name => “ChunkChunk”,
:dependent => :destroy
has_many :right_chunks, :through => :left_bindings

has_many :right_bindings, :foreign_key => “right_chunk_id”,
:class_name => “ChunkChunk”,
:dependent => :destroy
has_many :left_chunks, :through => :right_bindings

end

class ChunkChunk < ActiveRecord::Base
belongs_to :left_chunk, :class_name => “Chunk”, :foreign_key => “left_chunk_id”
belongs_to :right_chunk, :class_name => “Chunk”, :foreign_key => “right_chunk_id”
end[/code]
Dalo rade, dzieki

A jednak nie, dziala tylko w jedna strone, jakies pomysly ?

Mógłbyś rozwinąć tę myśl? Tzn. podaj dokładny scenariusz “nie działania”. I uwaga dot. nazewnictwa - ChunkChunk lepiej nazwać Binding.

http://railscasts.com/episodes/163-self-referential-association

Działa “w tą i z powrotem” :slight_smile:

Post Sevosa zgłaszam do tytułu forumowego wtf miesiąca :wink:

Można pójść podejściem z railscastów, albo zrobić macierz kwadratową (tzn. dla każdego połączenia trzymamy dwa wiersze w bazie: w jednym wierszu X to node1 a Y to node2, w drugim wierszu na odwrót). Z czym dokładnie masz problem, Astro?

Dziekuje za mocne wsparcie, pokrecilem troche z tym left i right, z tad dzialalo przypisywanie wezla z jednej strony a z drugiej nie. Juz jest okejka.

Musze dokladniej obczaic kiedy cos jest zapisywane do bazy przy wywolaniu metody << , konsola pokazywala pusta tablice, mimo ze do bazy zostal rekord zapisany.

Pozdrowienia