🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.ruby
Article #826

Re: RoR vs PHP

#826
From: Jaroslaw Zabiello
Date: Tue, 01 Jan 2008 23:14
73 lines
3210 bytes
On Tue, 01 Jan 2008 19:45:20 -0000, Maciej Piechotka  
<uzytkownik2@gmail.com> wrote:

> Można prosić dla 3 metody kod (1 tabela na klasę) w Sequelu?

class Parent < Sequel::Model(:parents)
   set_schema do
     primary_key :id
     varchar :pole_parent
   end
end

class Child1 < Sequel::Model(:childs1)
   set_schema do
     primary_key :parent_id
     varchar :pole1
   end
   class << self
     def next_id
       self.select(:max[:parent_id].as(:last_id)).first.last_id.to_i + 1
     end
   end
   before_save do
     unless Parent.filter(:id => Child1.next_id).first
       raise 'Parent cannot assign more childs1 objects'
     end
   end
end

Parent.create_table!
Child1.create_table!

Parent.create :pole_parent => 'Alojzy'
Child1.create :pole1 => 'Jas'
Parent.all.map{|row| p row.values}
Child1.all.map{|row| p row.values}
# => {:pole_parent=>"Alojzy", :id=>1}
# => {:pole1=>"Jas", :parent_id=>1}

Child1.create :pole1 => 'Malgosia'
# => Parent cannot assign more childs1 objects


>> Zrozumiałem, że miałeś sytuację że jest dana baza i należy jakośją  
>> zamapować w Ruby.
>
> Nie. Mamy pewien model dziedziczenia (np. Person, Client, Employee) i  
> mamy taką strukturę zapisać w bazie danych.

To jest bez sensu. Tzn. ma sens tylko w trywialnych przypadkach. I tylko  
tyle potrafią migracje AR. Każdy nietrywialny przykład wymaga dodania  
dodatkowego kodu poza samym attr_accessor. Przecież z podanego wcześniej  
przez ciebie modelu dziedziczenia kompletnie NIC nie wynika. Podałeś  
przecież:

class Parent
   attr_accessor :pole_parent
end

class Child1 < Parent
   attr_accessor :pole1
end

class Child2 < Parent
   attr_accessor :pole2
end

a w tabelach jakimś cudem wyskoczyły ci dodatkowe, inne pola. To nie jest  
pełny opis klas.

-- 
Jarosław Zabiełło
http://blog.zabiello.com
Technical Details
Message-ID: <op.t39xi4kdr2rg33@jzmbp.local>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
References: <fl6ahk$m1q$1@inews.gazeta.pl> <op.t351icnsr2rg33@jzmbp.local> <fl93bh$d8p$1@inews.gazeta.pl> <r4il45-1ar.ln1@router.piechotka.com.pl> <op.t358bkfwr2rg33@jzmbp.local> <fl9aau$9b9$5@inews.gazeta.pl> <20071231084648.6d47feda.gryf_esm-no@spam-o2.pl> <op.t37dq3ydr2rg33@jzmbp.local> <0enn45-u25.ln1@router.piechotka.com.pl> <op.t37qnpdrr2rg33@jzmbp.local> <3pbo45-ha7.ln1@router.piechotka.com.pl> <op.t3777x1jr2rg33@jzmbp.local> <jtip45-n8c.ln1@router.piechotka.com.pl> <op.t388lvhur2rg33@jzmbp.local> <h96q45-37f.ln1@router.piechotka.com.pl> <op.t39jhmarr2rg33@jzmbp.local> <grhq45-5dg.ln1@router.piechotka.com.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.gazeta.pl!not-for-mail
From: "Jaroslaw Zabiello" <abuse@tpnet.pl>
Newsgroups: pl.comp.lang.ruby
Subject: Re: RoR vs PHP
Date: Tue, 01 Jan 2008 23:14:53 -0000
Organization: "Portal Gazeta.pl -> http://www.gazeta.pl"
Lines: 73
Message-ID: <op.t39xi4kdr2rg33@jzmbp.local>
References: <fl6ahk$m1q$1@inews.gazeta.pl> <op.t351icnsr2rg33@jzmbp.local> <fl93bh$d8p$1@inews.gazeta.pl> <r4il45-1ar.ln1@router.piechotka.com.pl> <op.t358bkfwr2rg33@jzmbp.local> <fl9aau$9b9$5@inews.gazeta.pl> <20071231084648.6d47feda.gryf_esm-no@spam-o2.pl> <op.t37dq3ydr2rg33@jzmbp.local> <0enn45-u25.ln1@router.piechotka.com.pl> <op.t37qnpdrr2rg33@jzmbp.local> <3pbo45-ha7.ln1@router.piechotka.com.pl> <op.t3777x1jr2rg33@jzmbp.local> <jtip45-n8c.ln1@router.piechotka.com.pl> <op.t388lvhur2rg33@jzmbp.local> <h96q45-37f.ln1@router.piechotka.com.pl> <op.t39jhmarr2rg33@jzmbp.local> <grhq45-5dg.ln1@router.piechotka.com.pl>
NNTP-Posting-Host: 89.124.240.242
Mime-Version: 1.0
X-Trace: inews.gazeta.pl 1199229297 13289 89.124.240.242 (1 Jan 2008 23:14:57 GMT)
X-Complaints-To: usenet@agora.pl
NNTP-Posting-Date: Tue, 1 Jan 2008 23:14:57 +0000 (UTC)
X-User: hipertracker
User-Agent: Opera Mail/9.25 (MacIntel)
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit