🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.ruby
13 messages
13 total messages Started by zbyszek.malec@gm Mon, 16 Feb 2009 11:48
ActiveRecord + drzewo
#1162
Author: zbyszek.malec@gm
Date: Mon, 16 Feb 2009 11:48
47 lines
1171 bytes
Witam
U¿ywam RoR i ActiveRecords od niedawna, wiêc nie mam jeszcze zbyt
du¿ego do¶wiadczenia. Byæ mo¿e pytanie jest banalne, ale nie znalaz³em
na nie odpowiedzi samodzielnie, wiêc pytam tutaj.

Mam tak± migracjê:

class CreateCategories < ActiveRecord::Migration
  def self.up
    create_table :categories do |t|
      t.string :name

      t.belongs_to :parent_category
    end
  end

  def self.down
    drop_table :categories
  end
end


i odpowiadaj±cy jej model:

class Category < ActiveRecord::Base
  belongs_to :parent_category, :class_name => 'Category'
  has_many   :subcategories, :class_name => 'Category'
end

Czyli mam drzewo kategorii, ka¿da kategoria mo¿e mieæ kategoriê
nadrzêdn± oraz wiele kategorii podrzêdnych.
Mój problem jest taki, ¿e nastêpuj±ce wywo³anie:

category = Category.new :name => 'cat'
subcategory = category.subcategories.build :name => 'subcat'

nie ustawia parent_category_id u podkategorii na ich rodzica. Czy da
siê to osi±gn±æ deklaratywnie,
czy jestem zmuszony do rêcznej obs³ugi tej sytuacji?

U¿ywam JRuby 1.1.4 i RoR 2.1.0.

--
Pozdrawiam
Zbyszek Malec

Re: ActiveRecord + drzewo
#1167
Author: =?ISO-8859-2?Q?R
Date: Mon, 16 Feb 2009 23:23
15 lines
495 bytes
zbyszek.malec@gmail.com pisze:
> category = Category.new :name => 'cat'
> subcategory = category.subcategories.build :name => 'subcat'
>
> nie ustawia parent_category_id u podkategorii na ich rodzica. Czy da
> si� to osi�gn�� deklaratywnie,
> czy jestem zmuszony do r�cznej obs�ugi tej sytuacji?

Czy robisz w og�le .save? Bo po zapisie powinny by� ustawione poprawnie
idki (ew. potrzebny jest reload obiekt�w).

--
Rados�aw Bu�at
http://radarek.jogger.pl - m�j blog

Re: ActiveRecord + drzewo
#1169
Author: Wojciech Piekuto
Date: Tue, 17 Feb 2009 04:45
23 lines
736 bytes
Hej,

Jak wspomnia³ ju¿ Rados³aw, ¿eby parent_category_id ustawi³o siê,
rodzic musi byæ wcze¶niej zapisany do bazy. Z drugiej strony je¶li nie
jest zapisany to nie ma czym siê przejmowaæ, bo przy zapisie
któregokolwiek z nich i tak oba zostan± zapisane, a parent_category_id
w subcategory ustawione przez AR.

Jednak twoja definicja klasy Category jest nie do koñca ok. Musisz
powiedziec jakiej kolumny ma u¿yæ has_many, poniewa¿ domy¶lnie jest to
'category_id'.
class Category < ActiveRecord::Base
  belongs_to :parent_category, :class_name => 'Category'
  has_many   :subcategories, :class_name => 'Category', :foreign_key
=> 'parent_category_id'
end

Pozdrawiam,
Wojciech Piekutowski

Re: ActiveRecord + drzewo
#1170
Author: Zbyszek Malec
Date: Tue, 17 Feb 2009 18:59
11 lines
285 bytes
Dnia Mon, 16 Feb 2009 23:23:08 +0100, Rados�aw Bu�at napisa�(a):

> Czy robisz w og�le .save? Bo po zapisie powinny by� ustawione poprawnie
> idki (ew. potrzebny jest reload obiekt�w).

Robi� save, po zbudowaniu ca�ego drzewa kategorii.

--
Zbyszek Malec
gg 2756100

Re: ActiveRecord + drzewo
#1171
Author: Zbyszek Malec
Date: Tue, 17 Feb 2009 19:11
18 lines
566 bytes
Dnia Tue, 17 Feb 2009 04:45:11 -0800 (PST), Wojciech Piekutowski
napisa�(a):

> Jednak twoja definicja klasy Category jest nie do ko�ca ok. Musisz
> powiedziec jakiej kolumny ma u�y� has_many, poniewa� domy�lnie jest to
> 'category_id'.
> class Category < ActiveRecord::Base
>   belongs_to :parent_category, :class_name => 'Category'
>   has_many   :subcategories, :class_name => 'Category', :foreign_key
> => 'parent_category_id'
> end

Rzeczywi�cie, przyczyn� by� b��d w definicji kategorii. Dzi�ki za pomoc.

--
Zbyszek Malec
gg 2756100

Re: ActiveRecord + drzewo
#1174
Author: =?ISO-8859-2?Q?M
Date: Wed, 18 Feb 2009 01:33
22 lines
714 bytes
On Feb 17, 7:11 pm, Zbyszek Malec <zbysze...@tlen.pl> wrote:
> Dnia Tue, 17 Feb 2009 04:45:11 -0800 (PST), Wojciech Piekutowski
> napisa³(a):
>
> > Jednak twoja definicja klasy Category jest nie do koñca ok. Musisz
> > powiedziec jakiej kolumny ma u¿yæ has_many, poniewa¿ domy¶lnie jest to
> > 'category_id'.
> > class Category < ActiveRecord::Base
> >   belongs_to :parent_category, :class_name => 'Category'
> >   has_many   :subcategories, :class_name => 'Category', :foreign_key
> > => 'parent_category_id'
> > end
>
> Rzeczywi¶cie, przyczyn± by³ b³±d w definicji kategorii. Dziêki za pomoc.

A w ogóle czy nie lepiej skorzystaæ tutaj z acts_as_nested_set?

m.

Re: ActiveRecord + drzewo
#1190
Author: Daniel Podlejski
Date: Thu, 19 Feb 2009 20:52
18 lines
676 bytes
Zbyszek Malec napisał:

>  Próbowałem to znaleźć ręcznie w dokumentacji i nie udało mi się znaleźć
>  odpowiedniego linka (dopiero google mi pomogły). Korzystam z
>  api.rubyonrails.org i tam w tym lewym okienku nie ma śladu po
>  acts_as_nested_set czy Acts::As. Czy ja źle szukam czy może tam trzeba mieć
>  +2 do odkrywania?

Bo to wyleciało z "core" jakiś czas temu, a na api.rubyonrails.org jest
pewnie tylko dokumentacja do aktualnej wersji Rails.

Dlatego wolę http://apidock.com/ - jest dokumentacja do wersji
historycznych, na dodatek z dobrą wyszukiwarką, w przyjemniejszej
dla oka formie, i z możliwością komentowania.

--
Daniel Podlejski

Re: ActiveRecord + drzewo
#1189
Author: Zbyszek Malec
Date: Thu, 19 Feb 2009 21:16
15 lines
543 bytes
Dnia Wed, 18 Feb 2009 01:33:45 -0800 (PST), Maciej Bi�as napisa�(a):

> A w og�le czy nie lepiej skorzysta� tutaj z acts_as_nested_set?

Ha, to jest w�a�nie to czego potrzebowa�em.
Pr�bowa�em to znale�� r�cznie w dokumentacji i nie uda�o mi si� znale��
odpowiedniego linka (dopiero google mi pomog�y). Korzystam z
api.rubyonrails.org i tam w tym lewym okienku nie ma �ladu po
acts_as_nested_set czy Acts::As. Czy ja �le szukam czy mo�e tam trzeba mie�
+2 do odkrywania?

--
Zbyszek Malec
gg 2756100

Re: ActiveRecord + drzewo
#1191
Author: =?ISO-8859-2?Q?M
Date: Fri, 20 Feb 2009 02:05
18 lines
604 bytes
On Feb 19, 9:52 pm, Daniel Podlejski <under...@underley.eu.org> wrote:
> Zbyszek Malec napisa³:
> >  Czy ja ¼le szukam czy mo¿e tam trzeba mieæ
> >  +2 do odkrywania?
>
> Bo to wylecia³o z "core" jaki¶ czas temu, a na api.rubyonrails.org jest
> pewnie tylko dokumentacja do aktualnej wersji Rails.
>
> Dlatego wolêhttp://apidock.com/- jest dokumentacja do wersji
> historycznych, na dodatek z dobr± wyszukiwark±, w przyjemniejszej
> dla oka formie, i z mo¿liwo¶ci± komentowania.

Wylecia³o dok³adnie wraz z RoRem 2.0 (wraz z paginacj±, in_place_edit
i innymi...)

m.

Re: ActiveRecord + drzewo
#1192
Author: Wojtek Piekutows
Date: Fri, 20 Feb 2009 02:29
29 lines
905 bytes
On Feb 18, 10:33 am, Maciej Bi³as <mac...@inszy.org> wrote:
> On Feb 17, 7:11 pm, Zbyszek Malec <zbysze...@tlen.pl> wrote:
>
> > Dnia Tue, 17 Feb 2009 04:45:11 -0800 (PST), Wojciech Piekutowski
> > napisa³(a):
>
> > > Jednak twoja definicja klasy Category jest nie do koñca ok. Musisz
> > > powiedziec jakiej kolumny ma u¿yæ has_many, poniewa¿ domy¶lnie jest to
> > > 'category_id'.
> > > class Category < ActiveRecord::Base
> > >   belongs_to :parent_category, :class_name => 'Category'
> > >   has_many   :subcategories, :class_name => 'Category', :foreign_key
> > > => 'parent_category_id'
> > > end
>
> > Rzeczywi¶cie, przyczyn± by³ b³±d w definicji kategorii. Dziêki za pomoc.
>
> A w ogóle czy nie lepiej skorzystaæ tutaj z acts_as_nested_set?
>
> m.

acts_as_tree bêdzie bardziej pasowaæ do tego przypadku.

Pozdrawiam,
Wojciech Piekutowski

Re: ActiveRecord + drzewo
#1193
Author: =?iso-8859-2?B?U
Date: Fri, 20 Feb 2009 19:14
29 lines
986 bytes
On Fri, 20 Feb 2009 11:29:57 +0100, Wojtek Piekutowski
<w.piekutowski@gmail.com> wrote:
>>
>> > > Jednak twoja definicja klasy Category jest nie do ko�ca ok. Musisz
>> > > powiedziec jakiej kolumny ma u�y� has_many, poniewa� domy�lnie jest
>> to
>> > > 'category_id'.
>> > > class Category < ActiveRecord::Base
>> > > � belongs_to :parent_category, :class_name => 'Category'
>> > > � has_many � :subcategories, :class_name => 'Category', :foreign_key
>> > > => 'parent_category_id'
>> > > end
>>
>> > Rzeczywi�cie, przyczyn� by� b��d w definicji kategorii. Dzi�ki za
>> pomoc.
>>
>> A w og�le czy nie lepiej skorzysta� tutaj z acts_as_nested_set?
>
> acts_as_tree b�dzie bardziej pasowa� do tego przypadku.

acts_as_nested_set to wlasnie implementacja drzewa. ktory bedzie lepszy,
zalezy od tego, jakie operacje beda wykonywane najczesciej na tym drzewie.

pzdr
	szeryf

--
Przemys�aw ,,Szeryf'' Kowalczyk :: http://szeryf.wordpress.com/

Re: ActiveRecord + drzewo
#1194
Author: =?ISO-8859-2?Q?R
Date: Fri, 20 Feb 2009 19:42
14 lines
458 bytes
Przemys�aw Kowalczyk pisze:
>
> acts_as_nested_set to wlasnie implementacja drzewa. ktory bedzie lepszy,
> zalezy od tego, jakie operacje beda wykonywane najczesciej na tym drzewie.
>

Jeszcze co� mi �wita w g�owie co� takiego jak better_nested_set i
awesome_nested_set :). Nazwy maj� sugerowa� lepsz� implementacj�, kolega
mo�e sprawdzi� jak jest w rzeczywisto�ci.

--
Rados�aw Bu�at
http://radarek.jogger.pl - m�j blog

Re: ActiveRecord + drzewo
#1196
Author: Zbyszek Malec
Date: Wed, 25 Feb 2009 23:46
13 lines
475 bytes
Dnia Fri, 20 Feb 2009 19:42:35 +0100, Rados�aw Bu�at napisa�(a):

> Jeszcze co� mi �wita w g�owie co� takiego jak better_nested_set i
> awesome_nested_set :). Nazwy maj� sugerowa� lepsz� implementacj�, kolega
> mo�e sprawdzi� jak jest w rzeczywisto�ci.

Ostatecznie u�y�em awesome_nested_set, kt�ry to jest poprawion� wersj�
better_nested_set, kt�ry to jest poprawion� wersj� acts_as_nested_set :]

--
Zbyszek Malec
gg 2756100

Thread Navigation

This is a paginated view of messages in the thread with full content displayed inline.

Messages are displayed in chronological order, with the original post highlighted in green.

Use pagination controls to navigate through all messages in large threads.

Back to All Threads