Thread View: pl.comp.lang.ruby
13 messages
13 total messages
Started by RaW
Sun, 27 Jan 2008 23:18
walidacja modelu w przypadku has_and_belongs_to_many
Author: RaW
Date: Sun, 27 Jan 2008 23:18
Date: Sun, 27 Jan 2008 23:18
8 lines
1322 bytes
1322 bytes
class Role < ActiveRecord::Base has_and_belongs_to_many :rights end W jaki sposób mogę wykonać 'validates_presence_of' dla 'role.rights'? -- RaW
Re: walidacja modelu w przypadku has_and_belongs_to_many
Author: Jaroslaw Zabiello
Date: Tue, 29 Jan 2008 13:14
Date: Tue, 29 Jan 2008 13:14
16 lines
1323 bytes
1323 bytes
On Sun, 27 Jan 2008 23:18:31 -0000, RaW <rafal@wrzochol.net> wrote: > class Role < ActiveRecord::Base > has_and_belongs_to_many :rights > end > > W jaki sposób mogę wykonać 'validates_presence_of' dla 'role.rights'? Nie używaj HABTM, jest niezalecane. Lepiej używać has_many w połączeniu z :through. The Rails Way uważa, że tak jest lepiej, masz wtedy prawdziwy model i więcej możliwości. -- Jarosław Zabiełło http://blog.zabiello.com irc://irc.eu.freenode.net/ruby.pl
Re: walidacja modelu w przypadku has_and_belongs_to_many
Author: Piotr 'piter' Hlawski
Date: Tue, 29 Jan 2008 14:21
Date: Tue, 29 Jan 2008 14:21
20 lines
1841 bytes
1841 bytes
Jaroslaw Zabiello wrote: > On Sun, 27 Jan 2008 23:18:31 -0000, RaW <rafal@wrzochol.net> wrote: > >> class Role < ActiveRecord::Base >> has_and_belongs_to_many :rights >> end >> >> W jaki sposób mogę wykonać 'validates_presence_of' dla 'role.rights'? > > Nie używaj HABTM, jest niezalecane. Lepiej używać has_many w połączeniu z > :through. The Rails Way uważa, że tak jest lepiej, masz wtedy prawdziwy > model i więcej możliwości. > Uważam, że do przesada. Nie zawsze prawdziwy model "po drodze" jest potrzebny. -- [ Piotr 'piter' Hlawski ( <phlawski$gmail,com> ) ( GG: 4534287 ) ]
Re: walidacja modelu w przypadku has_and_belongs_to_many
Author: Paweł Kondzior
Date: Wed, 30 Jan 2008 07:32
Date: Wed, 30 Jan 2008 07:32
36 lines
2438 bytes
2438 bytes
Dnia 1/29/08 3:21 PM, Piotr 'piter' Hlawski napisał(a):
> Jaroslaw Zabiello wrote:
>
>> On Sun, 27 Jan 2008 23:18:31 -0000, RaW <rafal@wrzochol.net> wrote:
>>
>>> class Role < ActiveRecord::Base
>>> has_and_belongs_to_many :rights
>>> end
>>>
>>> W jaki sposób mogę wykonać 'validates_presence_of' dla 'role.rights'?
>> Nie używaj HABTM, jest niezalecane. Lepiej używać has_many w połączeniu z
>> :through. The Rails Way uważa, że tak jest lepiej, masz wtedy prawdziwy
>> model i więcej możliwości.
>>
>
> Uważam, że do przesada. Nie zawsze prawdziwy model "po drodze" jest
> potrzebny.
>
Ja sie pod tym podpisuje, The Rails Way is not the only one Way, czasami
chodzi tylko o skojarzenie dwoch modeli tabela laczacal i niczym wiecej.
Teraz moze sprobuje odpowiedziec jakos na pytanie, wydaje mi sie ze
presence_of bedzie korzystac tylko z lokalnych atrybutow, wiec musisz
albo napisac wlasny validator albo przeciazyc "validate" i tam umiescic
kod sprawdzajacy self.rights oraz kod dodajac komunikaty o bledzie. Lub
uzyc validates_each :jakis_istniejacy_atrybut ktory ma byc
odpowiedzialny za role.rights, masz tutaj przyklad z aplikacji wziety
validates_each :publish_in_all do |record, attr, value|
record.errors.add attr, _('News must be published somewhere')
unless self.intranet_items.any?
end
Re: walidacja modelu w przypadku has_and_belongs_to_many
Author: RaW
Date: Sat, 02 Feb 2008 01:40
Date: Sat, 02 Feb 2008 01:40
54 lines
3257 bytes
3257 bytes
On Jan 30, 7:32 am, Paweł Kondzior <kondzio...@gmail.com> wrote:
> Dnia 1/29/08 3:21 PM, Piotr 'piter' Hlawski napisał(a):
>
>
>
> > Jaroslaw Zabiello wrote:
>
> >> On Sun, 27 Jan 2008 23:18:31 -0000, RaW <ra...@wrzochol.net> wrote:
>
> >>> class Role < ActiveRecord::Base
> >>> has_and_belongs_to_many :rights
> >>> end
>
> >>> W jaki sposób mogę wykonać 'validates_presence_of' dla 'role.rights'?
> >> Nie używaj HABTM, jest niezalecane. Lepiej używać has_many w połączeniu z
> >> :through. The Rails Way uważa, że tak jest lepiej, masz wtedy prawdziwy
> >> model i więcej możliwości.
>
> > Uważam, że do przesada. Nie zawsze prawdziwy model "po drodze" jest
> > potrzebny.
>
> Ja sie pod tym podpisuje, The Rails Way is not the only one Way, czasami
> chodzi tylko o skojarzenie dwoch modeli tabela laczacal i niczym wiecej.
>
> Teraz moze sprobuje odpowiedziec jakos na pytanie, wydaje mi sie ze
> presence_of bedzie korzystac tylko z lokalnych atrybutow, wiec musisz
> albo napisac wlasny validator albo przeciazyc "validate" i tam umiescic
> kod sprawdzajacy self.rights oraz kod dodajac komunikaty o bledzie. Lub
> uzyc validates_each :jakis_istniejacy_atrybut ktory ma byc
> odpowiedzialny za role.rights, masz tutaj przyklad z aplikacji wziety
>
> validates_each :publish_in_all do |record, attr, value|
> record.errors.add attr, _('News must be published somewhere')
> unless self.intranet_items.any?
> end
Dzięki bardzo za zainteresowanie.
Nie mam jeszcze dużego doświadczenia w Raisach ale również wydaje mi
się, że tworzenie modelu tylko na potrzeby walidacji nie jest
konieczne.
Ostatecznie dzieki Waszej pomocy wyklepałem następujący kod:
validate :must_have_rights
def must_have_rights
errors.add_to_base("Role must have at least one Right to be
created") unless self.rights.any?
end
i wszystko działa jak należy.
Pozdrawiam
--
RaW
Re: walidacja modelu w przypadku has_and_belongs_to_many
Author: Jaroslaw Zabiello
Date: Tue, 05 Feb 2008 04:13
Date: Tue, 05 Feb 2008 04:13
28 lines
2310 bytes
2310 bytes
On Wed, 30 Jan 2008 07:32:49 -0000, Paweł Kondzior <kondzior.p@gmail.com> wrote: >> Uważam, że do przesada. Nie zawsze prawdziwy model "po drodze" jest >> potrzebny. > > Ja sie pod tym podpisuje, The Rails Way is not the only one Way, czasami > chodzi tylko o skojarzenie dwoch modeli tabela laczacal i niczym wiecej. Niestety, ale nie macie racji. To nie tylko osobiste zdanie autora książki The Rails Way. To jest oficjalne stanowisko wyrażone w dokumentacji do RoR (http://api.rubyonrails.com/classes/ActiveRecord/Associations/ClassMethods.html). Makro habtm jest oznaczone oficjalnie jako *DEPRECIATED* i dokumentacja RoR SILNIE ZALECA używanie prawdziwych tabel łączących a nie tego sztucznego tworu bez modelu, klucza głównego i bez możliwości wykorzystania dodatkowym kolumn w tabeli. Cytat: "Deprecated: Any additional fields added to the join table will be placed as attributes when pulling records out through has_and_belongs_to_many associations. Records returned from join tables with additional attributes will be marked as ReadOnly (because we can‘t save changes to the additional attributes). It‘s strongly recommended that you upgrade any associations with attributes to a real join model (see introduction)." -- Jarosław Zabiełło http://blog.zabiello.com irc://irc.eu.freenode.net/ruby.pl
Re: walidacja modelu w przypadku has_and_belongs_to_many
Author: Piotr 'piter' Hlawski
Date: Tue, 05 Feb 2008 08:37
Date: Tue, 05 Feb 2008 08:37
42 lines
3373 bytes
3373 bytes
Jaroslaw Zabiello wrote: > On Wed, 30 Jan 2008 07:32:49 -0000, Paweł Kondzior <kondzior.p@gmail.com> > wrote: > >>> Uważam, że do przesada. Nie zawsze prawdziwy model "po drodze" jest >>> potrzebny. >> >> Ja sie pod tym podpisuje, The Rails Way is not the only one Way, czasami >> chodzi tylko o skojarzenie dwoch modeli tabela laczacal i niczym wiecej. > > Niestety, ale nie macie racji. To nie tylko osobiste zdanie autora książki > The Rails Way. To jest oficjalne stanowisko wyrażone w dokumentacji do RoR > (http://api.rubyonrails.com/classes/ActiveRecord/Associations/ClassMethods.html). > Makro habtm jest oznaczone oficjalnie jako *DEPRECIATED* i dokumentacja > RoR SILNIE ZALECA używanie prawdziwych tabel łączących a nie tego > sztucznego tworu bez modelu, klucza głównego i bez możliwości > wykorzystania dodatkowym kolumn w tabeli. Cytat: > > "Deprecated: Any additional fields added to the join table will be placed > as attributes when pulling records out through has_and_belongs_to_many > associations. Records returned from join tables with additional attributes > will be marked as ReadOnly (because we can?t save changes to the > additional attributes). It?s strongly recommended that you upgrade any > associations with attributes to a real join model (see introduction)." > Moim zdaniem źle to interpretujesz. Deprecation tyczy się tylko przypadków kiedy chciałbyś wyposażyć tabelę łączącą w dodatkowe atrybuty. Wtedy oczywiście tworzysz nowy model z tradycyjnym has_many/belongs_to/:through W przypadku gdy tabela łącząca jest tylko i wyłącznie tabelą łączącą, a więc posiada model1_id i model2_id to po co mi ona jako fizyczny model? Taka tabela łącząca jest normalnym rozwiązaniem w projektach bazodanowych w przypadku relacji wiele-do-wielu w procesie normalizacji i nie ma prawa być nagle deprecated, bo tak sobie zażyczyli projektanci RoR. Dajmy spokój takim sądom, nie uwierzę w to. -- [ Piotr 'piter' Hlawski ( <phlawski$gmail,com> ) ( GG: 4534287 ) ]
Re: walidacja modelu w przypadku has_and_belongs_to_many
Author: Jaroslaw Zabiello
Date: Tue, 05 Feb 2008 11:24
Date: Tue, 05 Feb 2008 11:24
15 lines
1674 bytes
1674 bytes
On Tue, 05 Feb 2008 08:37:41 -0000, Piotr 'piter' Hlawski <phlawski@cut_this_crap.gmail.com> wrote: > W przypadku gdy tabela łącząca jest tylko i wyłącznie tabelą łączącą, a > więc posiada model1_id i model2_id to po co mi ona jako fizyczny model? Choćby po to abyś miał dostęp do pełnych joinów (w habtm nie można użyć :include), albo aby ominąć push_with_attributes. Poza tym taka tabela w wypadku habtm *nie może* mieć pk (sic!) i jest po prostu tworem sztucznym. Ma też mniejsze możliwości i koszmarnie długą nazwę makra ;) -- Jarosław Zabiełło http://blog.zabiello.com irc://irc.eu.freenode.net/ruby.pl
Re: walidacja modelu w przypadku has_and_belongs_to_many
Author: Piotr 'piter' Hlawski
Date: Tue, 05 Feb 2008 11:36
Date: Tue, 05 Feb 2008 11:36
26 lines
2346 bytes
2346 bytes
Jaroslaw Zabiello wrote: > On Tue, 05 Feb 2008 08:37:41 -0000, Piotr 'piter' Hlawski > <phlawski@cut_this_crap.gmail.com> wrote: > >> W przypadku gdy tabela łącząca jest tylko i wyłącznie tabelą łączącą, a >> więc posiada model1_id i model2_id to po co mi ona jako fizyczny model? > > Choćby po to abyś miał dostęp do pełnych joinów (w habtm nie można użyć > :include), albo aby ominąć push_with_attributes. Czasem to jest kompletnie niepotrzebne. > Poza tym taka tabela w > wypadku habtm *nie może* mieć pk (sic!) i jest po prostu tworem sztucznym. Tworem sztucznym z jakiego punktu widzenia? Bo z punktu widzenia DB jak najbardziej naturalnym, co wynika z normalizacji (3NF) > Ma też mniejsze możliwości i koszmarnie długą nazwę makra ;) Są przypadki w których te możliwości są zbędne. Nazwa mi kompletnie nie przeszkadza :) -- [ Piotr 'piter' Hlawski ( <phlawski$gmail,com> ) ( GG: 4534287 ) ]
Re: walidacja modelu w przypadku has_and_belongs_to_many
Author: piotr.solnica
Date: Fri, 08 Feb 2008 22:21
Date: Fri, 08 Feb 2008 22:21
39 lines
3423 bytes
3423 bytes
On Feb 5, 9:37 am, Piotr 'piter' Hlawski <phlawski@cut_this_crap.gmail.com> wrote: > Jaroslaw Zabiello wrote: > > On Wed, 30 Jan 2008 07:32:49 -0000, Paweł Kondzior <kondzio...@gmail.com> > > wrote: > > >>> Uważam, że do przesada. Nie zawsze prawdziwy model "po drodze" jest > >>> potrzebny. > > >> Ja sie pod tym podpisuje, The Rails Way is not the only one Way, czasami > >> chodzi tylko o skojarzenie dwoch modeli tabela laczacal i niczym wiecej. > > > Niestety, ale nie macie racji. To nie tylko osobiste zdanie autora książki > > The Rails Way. To jest oficjalne stanowisko wyrażone w dokumentacji do RoR > > (http://api.rubyonrails.com/classes/ActiveRecord/Associations/ClassMet...). > > > Makro habtm jest oznaczone oficjalnie jako *DEPRECIATED* i dokumentacja > > RoR SILNIE ZALECA używanie prawdziwych tabel łączących a nie tego > > sztucznego tworu bez modelu, klucza głównego i bez możliwości > > wykorzystania dodatkowym kolumn w tabeli. Cytat: > > > "Deprecated: Any additional fields added to the join table will be placed > > as attributes when pulling records out through has_and_belongs_to_many > > associations. Records returned from join tables with additional attributes > > will be marked as ReadOnly (because we can?t save changes to the > > additional attributes). It?s strongly recommended that you upgrade any > > associations with attributes to a real join model (see introduction)." > > Moim zdaniem źle to interpretujesz. Deprecation tyczy się tylko przypadków > kiedy chciałbyś wyposażyć tabelę łączącą w dodatkowe atrybuty. Wtedy > oczywiście tworzysz nowy model z tradycyjnym has_many/belongs_to/:through Mniejsza o interpretacje, HABTM wyleci pewnie z Railsow z jednej prostej przyczyny - nie jest RESTowy. Wniosek prosty, lepiej tego nie uzywac. Pozdrawiam, solnic
Re: walidacja modelu w przypadku has_and_belongs_to_many
Author: Przemysław Kowalczyk
Date: Sat, 09 Feb 2008 07:35
Date: Sat, 09 Feb 2008 07:35
14 lines
1509 bytes
1509 bytes
On Fri, 08 Feb 2008 23:21:34 +0100, piotr.solnica@gmail.com <piotr.solnica@gmail.com> wrote: > > Mniejsza o interpretacje, HABTM wyleci pewnie z Railsow z jednej > prostej przyczyny - nie jest RESTowy. Wniosek prosty, lepiej tego nie > uzywac. nawet jak wyleci, to bedzie napewno plugin acts_as_habtm :) pzdr szeryf -- Przemysław ,,Szeryf'' Kowalczyk :: http://szeryf.wordpress.com/
Re: walidacja modelu w przypadku has_and_belongs_to_many
Author: piotr.solnica
Date: Sat, 09 Feb 2008 14:16
Date: Sat, 09 Feb 2008 14:16
20 lines
2358 bytes
2358 bytes
On Feb 9, 8:35 am, Przemysław Kowalczyk <some...@microsoft.com> wrote: > On Fri, 08 Feb 2008 23:21:34 +0100, piotr.soln...@gmail.com > > <piotr.soln...@gmail.com> wrote: > > > Mniejsza o interpretacje, HABTM wyleci pewnie z Railsow z jednej > > prostej przyczyny - nie jest RESTowy. Wniosek prosty, lepiej tego nie > > uzywac. > > nawet jak wyleci, to bedzie napewno plugin acts_as_habtm :) Pewnie tak heh...a skoro juz o tym mowa, to osobiscie zgadzam sie z pogladem, ze habtm nie jest zbyt dobrym wyjsciem, na poczatku moze sie wydawac prostym i wygodnym rozwiazaniem, ale z czasem moga wystapic komplikacje zycia, poniewaz nie istnieje model reprezentujacy powiazanie, takze kiedy chcesz usunac powiazanie, to co usuwasz? Ten problem stanie sie znaczacy zwlaszcza kiedy przyjdzie do implementacji uprawnien w oparciu o role uzytkownikow. solnic
Re: walidacja modelu w przypadku has_and_belongs_to_many
Author: Przemysław Kowalczyk
Date: Sun, 10 Feb 2008 09:05
Date: Sun, 10 Feb 2008 09:05
20 lines
2092 bytes
2092 bytes
On Sat, 09 Feb 2008 15:16:40 +0100, piotr.solnica@gmail.com <piotr.solnica@gmail.com> wrote: > > Pewnie tak heh...a skoro juz o tym mowa, to osobiscie zgadzam sie z > pogladem, ze habtm nie jest zbyt dobrym wyjsciem, na poczatku moze sie > wydawac prostym i wygodnym rozwiazaniem, ale z czasem moga wystapic > komplikacje zycia, poniewaz nie istnieje model reprezentujacy > powiazanie, takze kiedy chcesz usunac powiazanie, to co usuwasz? Ten > problem stanie sie znaczacy zwlaszcza kiedy przyjdzie do implementacji > uprawnien w oparciu o role uzytkownikow. no z tym to i ja sie zgadzam. w naszym projekcie te nieliczne habtm, ktore byly, szybko ewoluowaly w strone has_many :through, a w wiekszosci przypadkow od poczatku robilismy has_many :through. pzdr szeryf -- Przemysław ,,Szeryf'' Kowalczyk :: http://szeryf.wordpress.com/
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