Olá!
Me vi na seguinte situação a poucos dias,
Tenho uma tabela pessoa, porém nela irei cadastrar clientes, fornecedores, transporatdoras etc..
como farei para trabalhar separadamente com as mesmas, ter um model para cada tipo de pessoa, mas utilizando a mesma tabela.
É simples basta criar uma herança simples de tabela. Vamos lá!
1)Crie um novo projeto em rails
rails heranca
2)Gere um scaffold para pessoa, cliente, fornecedor
script/generate scaffold pessoa campo_cliente:string campo_fornecedor:string type:string
script/generate scaffold cliente
script/generate scaffold fornecedor
3)Apague os migrates gerados para cliente e fornecedor
4)No migrate de pessoa digite:
class CreatePessoas < ActiveRecord::Migration
def self.up
create_table :pessoas do |t|
t.column :campo_cliente, :string, :limit => 60
t.column :campo_fornecedor, :string, :limit => 60
t.column :type, :string, :limit => 30
t.timestamps
end
add_index :pessoas, :type
end
def self.down
drop_table :pessoas
end
end
*OBS: O campo type é um campo reservado pelo rails justamente para o que queremos, ele ira Cadastrar o nome do Model correspondente.
5)Abra o Model Cliente e altere para:
class Cliente < Pessoa validates_presence_of :campo_cliente end
*OBS: Repare que ao invés de herdar diretamente da Classe ActiveRecord::Base, ele ira herdar primeiro a classe Pessoa que por sua vez herda de ActiveRecord::Base.
6)Abra o Model Fornecedor e altere para:
class Fornecedor < Pessoa validates_presence_of :campo_fornecedor end
7)Agora é só testar, e cadastrar um cliente http://localhost:3000/clientes/new
e cadastrar um fornecedor http://localhost:3000/fornecedors/new.
Veja que ele salvou o type com o nome do model referente.
Viram? simples!!



boa tarde,
estou a fazer uma base de dados, por enquanto em access, para guardar informações dos funcionarios.
depois será implementada num servidor linux e acessada por todos por uma aplicação ou pelo browser.
pode me dizer sff, quais as aplicações que se pode usar (as mais faceis de trabalhar) tanto no servidor, para a base de dados, como para os clientes, aplicação que vao aceder os dados.
se tiver uns tutoriais agradecia, com a conexão e outros.
a base de dados deve permitir diferente uso para diferentes utilizadores.
se puder responder para o mail agradecia imenso.
obrigado e cumprimentos,
André