Mike Lopes | SWX Softwares
Todos os posts de Mike Lopes
28 de janeiro de 2014 Blog, Código, PHP, WordpressCustom Post Type, wordpressMike Lopes
22 de janeiro de 2014 Blog, Código, Rails, RubyActiverReader, Model, Relacionamentos, Ruby on Rails, ValidaçõesMike Lopes
Veja a parte 01
Um model é uma classe que herda da classe ActiveRecord::Base e está associada a uma tabela.
O arquivo do model possui o nome da tabela em minúsculo no singular ("nomedatabela.rb") e a classe o nome em CamelCase ("class NomeDaTabela").
É possível criar o model manualmente, porém o Rails possui um generate que cria o model, o migration e a tabela dinamicamente. Funciona no seguinte formato:
rails g model <Model> <Campo1>:tipo <Campo2>:tipo <Campon>:tipo
ex.: A tabela "produtos", gerada anteriormente, poderia ser gerada da seguinte forma: será gerada a tabela, o model e a migration pra ela.
rails g model Produto name:string
Nota: Caso a tabela já tenha sido criada, é necessário adicionar o parâmetro "–force" no generate para reexecutar a migration.
Para acessar um campo pelo controller é necessário criar os métodos que irão ler e escrever o campo, por exemplo, para um campo "nome" ser lido, tem que ser criado o método "nome" e para gravar deverá ser criado o método "nome=".
def nome
self[:nome]
def nome=(novoNome)
self[:nome] = novoNome
Nota: É possível usar attr_accessor, attr_reader e attr_writer.
Para definir um relacionamento no model é necessário chamar o método com o nome do relacionamento (belongs_to, has_one, has_many, …) e o nome na tabela. Esse relacionamento será feito a partir do id. Ex.:
belongs_to :table2
relacionará o campo "table2_id" da "table1" com o campo "id" da "table2".
belongs_to (pertence à): Define que um registro de um model está ligado a um registro de outro model e pertence a ele numa relação "um pra um", por exemplo, em uma tabela com reitores e outra com universidades, "um reitor pertence a uma universidade", assim a tabela "universidade" deverá ter um campo "reitor_id".
has_one ("contém"): Define que um registro model contém outro de outro model numa relação "um pra um" (o contrário de belongs_to), no exemplo do belongs_to, temos que uma "universidade contém um reitor".
has_many ("contém muitos"): Define que um registro de um model contém muitos registros de outro model. Por exemplo, um cliente pode ir a uma loja comprar vários produtos, assim à relação será "cliente contém muitos produtos", logo a tabela "produtos_vendidos" terá um campo "cliente_id".
has_and_belongs_to_many ("contém e pertence a vários"): Define que vários registros de um model está associado a vários de outro model. Por exemplo, em um sistema de vendas, existe uma tabela "pedidos" que associa vários registros da tabela "produtos" a um da tabela "cliente", pois um cliente compra vários produtos; porém, também associa vários da tabela "clientes" a um da tabela "produtos", pois um produto é comprado por vários clientes.
Em um model é necessário validar se os dados são válidos antes de salvar no banco de dados, para validar é necessário definir o método no formato:
"validates :<campo>, <validação>".
ex.: O campo "nome" da tabela "table1" será obrigatório.
validates :nome, presence: true
Existem vários helpers para validação, como, por exemplo, garantir que apenas números são esperados:
validates :value, numerically: true
Para mais helpers acesse: http://edgeguides.rubyonrails.org/active_record_validations.html#validation-helpers
É possível definir mensagens para caso ocorra um erro na validação, ou seja, para quando um valor passado não estiver de acordo com a validação:
validates :nome, presence: true, :message => "O nome é obrigatório."
É possível definir a validação para uma determinada ação (create, update, …):
validates :nome, presence: true, on: :update
Validações por métodos customizados:
validate :método, on: :create
if (campo1 > 10)
erros.add(:value_error, "O número tem que ser maior que 10")
Informações sobre validações: http://edgeguides.rubyonrails.org/active_record_validations.html#validation-helpers
Documentação completa: http://api.rubyonrails.org/
SWX Direto da Trincheira 02 – Framework Chef, Ecommerce, Ruby on Rails e Campus Party
21 de janeiro de 2014 Blog, Destaques, VídeosCampus Party, ecommerce, Framework Chef, Model, Ruby on RailMike Lopes
No SWX Direto da trincheira 02, trazemos mais novidades do que rola na SWX Softwares. Se você ainda não viu, clique e confira:
SWX Labs 02 – Framework chef – http://bit.ly/1dao06u
Podcast explicando como funciona o framework chef e exemplificado a partir da nossa experiência na SWX.
E-Commerce: Ter a sua loja ou aluga-la? – http://bit.ly/1ajigwV
Neste texto debatemos estratégia de ecommerce a partir da ferramenta adotada, se ela será sua ou alugada a terceiros.
Model em Ruby on Rails (Parte 01) – http://bit.ly/1mtGnM1
Como utilizar o componente Model da arquitetura MVC? Comece a conhecer um pouco mais de Ruby on Rails na primeira parte deste tutorial.
SWX na Campus Party – http://bit.ly/1b4yuEr
A SWX foi convidada para a área Startup & Makers da Campus Party, um dos maiores eventos de tecnologia do mundo que tem sua versão brasileira acontecendo em São Paulo de 27 de janeiro a 2 de fevereiro.