Article View: pl.comp.lang.ruby
Article #401Re: RoR insert po utworzeniu
From: tomek gomek
Date: Mon, 22 Jan 2007 16:11
Date: Mon, 22 Jan 2007 16:11
85 lines
3677 bytes
3677 bytes
Dnia Mon, 22 Jan 2007 02:04:17 -0800, Rafał Komorowski napisał(a):
> Tomek, skoro masz tak podstawowe pytania, to radzę zostawić na razie
> "Rails Recipes", bo to jest książka z przykładami rozwiązania mniej
> banalnych problemów. Na początek przeczytaj "Agile Web Development
> with Rails", bo to jest podstawowa książka ucząca co i jak. Co do
> pytań, to:
Czytam, czytam a jakże :) Problem w tym, że muszę czytać i to i to
ponieważ tworzę aplikację dosyć pilnie i uparłem się na Railsy bo
wszyscy wokół mnie robią w php :) No i potrzebuję role itp.
>
> 1) Tabela "tabela" może być widoczna w kontrolerze 'users" poprzez
> relację. Jeśli stosujesz się do konwencji railsowej to nawet nie
Stosuję się, tu był tylko przykład, oczywiście pola są nazwane jak
piszesz.
> 2) SQL w Raisach jest zasadniczo szczątkowo potrzebny tylko do bardziej
> zagmatwanych rzeczy. Proste relacje są załatwiane w pełni przez
> mechanizm ORM (Object Relational Mapping), który w Rails funkcjonuje
> pod nazwą ActiveRecord. Nie mam dużego doświadczenia w Rails, ale nie
> sądzę, żeby potrzebne były ręczne INSERTy w jakiejkolwiek
> aplikacji, a jeśli jest taka potrzeba, to znaczy że
> projektant/programista źle zbudował model obiektów reprezentowany
> przez bazę danych.
Pewnie masz rację, dojdę pewnie kiedyś do tego :)
Czyli taki listing jest bez sensu? :)
Tabele:
rights (id, name, controller, action)
roles (id, name, info)
rights_roles (right_id, role_id) (tak bylo w książce, bez id bo to
lookupy)
[code w kontrolerze rightsroles]
def listing
# lista kontrolerow tylko
kontrolery = "select roles.id as id, roles.name as rola from rights_roles
left join rights on rights.id=right_id
left join roles on roles.id=role_id
group by rola
order by rola"
@role = RightsRole.find_by_sql(kontrolery)
akcje = "select right_id, role_id, rights.name as rname, controller,
action from rights_roles
left join rights on rights.id=right_id left join roles on
roles.id=role_id
where roles.id='"+params[:id]+"'
order by controller"
@akcje_by_kont = Right.find_by_sql(akcje)
end
[end code]
W planie mam zrobić listę kontrolerów zdefiniowanych w tabeli i po
kliknięciu w link kontrolera ma się pokazać lista zdefiniowanych do
niego akcji.
Acha, jeszcze:
class Right < ActiveRecord::Base
# relacje
has_and_belongs_to_many :roles
end
class Role < ActiveRecord::Base
# relacje
has_and_belongs_to_many :users
has_and_belongs_to_many :rights
end
Niby to działa, może ktoś coś podpowie? Jakieś hasło oprócz
ActiveRecord? ;)
--
-= pozdrawiam tomek =-
Technical Details
Message-ID:
<pan.2007.01.22.16.11.50.222398@moje.ubuntu.com.pl.eu.org>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mailReferences:
<pan.2007.01.21.11.43.43.948396@moje.ubuntu.com.pl.eu.org> <1169460257.171983.240680@q2g2000cwa.googlegroups.com>Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!newsfeed.gazeta.pl!news.onet.pl!not-for-mail From: tomek gomek <tomekgomek@moje.ubuntu.com.pl.eu.org> Newsgroups: pl.comp.lang.ruby Subject: Re: RoR insert po utworzeniu Date: Mon, 22 Jan 2007 17:11:51 +0100 Organization: Onet.pl Lines: 87 Message-ID: <pan.2007.01.22.16.11.50.222398@moje.ubuntu.com.pl.eu.org> References: <pan.2007.01.21.11.43.43.948396@moje.ubuntu.com.pl.eu.org> <1169460257.171983.240680@q2g2000cwa.googlegroups.com> NNTP-Posting-Host: dsl.barczewo.macrosat.pl Mime-Version: 1.0 X-Trace: news.onet.pl 1169482310 18011 83.17.241.218 (22 Jan 2007 16:11:50 GMT) X-Complaints-To: usenet@news.onet.pl NNTP-Posting-Date: Mon, 22 Jan 2007 16:11:50 +0000 (UTC) X-Sender: T4YKI3yiVp/u+qcHO2o3rTTMcIiI0RHD User-Agent: Pan/0.14.2.91 (As She Crawled Across the Table (Debian GNU/Linux)) Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit