🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: RoR insert po utworzeniu

#401
From: tomek gomek
Date: Mon, 22 Jan 2007 16:11
85 lines
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-mail
References: <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