Article View: pl.comp.lang.ruby
Article #916Re: walidacja modelu w przypadku has_and_belongs_to_many
From: 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
Technical Details
Message-ID:
<99bfaf72-aff4-4212-9a19-bcb356770de9@n20g2000hsh.googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!n20g2000hsh.googlegroups.com!not-for-mailReferences:
<d3eadb5f-68bc-448f-a7c4-4ef395c49552@i29g2000prf.googlegroups.com> <op.t5o0ezulr2rg33@macbook-pro-zbiru.local> <1978646.8dMPzUgjSc@zatoichi.homeunix.org> <fnp9ik$ojh$1@nemesis.news.tpi.pl>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!newsfeed.pionier.net.pl!news.glorb.com!postnews.google.com!n20g2000hsh.googlegroups.com!not-for-mail From: RaW <rafal@wrzochol.net> Newsgroups: pl.comp.lang.ruby Subject: Re: walidacja modelu w przypadku has_and_belongs_to_many Date: Fri, 1 Feb 2008 17:40:56 -0800 (PST) Organization: http://groups.google.com Lines: 58 Message-ID: <99bfaf72-aff4-4212-9a19-bcb356770de9@n20g2000hsh.googlegroups.com> References: <d3eadb5f-68bc-448f-a7c4-4ef395c49552@i29g2000prf.googlegroups.com> <op.t5o0ezulr2rg33@macbook-pro-zbiru.local> <1978646.8dMPzUgjSc@zatoichi.homeunix.org> <fnp9ik$ojh$1@nemesis.news.tpi.pl> NNTP-Posting-Host: 212.187.194.74 Mime-Version: 1.0 X-Trace: posting.google.com 1201916457 10623 127.0.0.1 (2 Feb 2008 01:40:57 GMT) X-Complaints-To: groups-abuse@google.com NNTP-Posting-Date: Sat, 2 Feb 2008 01:40:57 +0000 (UTC) Complaints-To: groups-abuse@google.com Injection-Info: n20g2000hsh.googlegroups.com; posting-host=212.187.194.74; posting-account=nOKuZgoAAACRvJ8_k0_zBxxiw1ibRu2K User-Agent: G2/1.0 X-HTTP-UserAgent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1.11) Gecko/20071204 Ubuntu/7.10 (gutsy) Firefox/2.0.0.11,gzip(gfe),gzip(gfe) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit