creawww.com
Instalar rails
gem install rails
instalar rails
rails new . -T
-T para que no instale test defaul minitest
Add to Gemfile rspec-rails and capybara (test group)
editar el /Gemfile y añadir:
group :test do
gem 'rspec-rails', '~> 3.7.1'
gem 'capybara', '~> 2.15.4'
end
actualizar las gemas
bundle install
instalar la gema de rspec
rails generate rspec:install
add config to /.rspec
--require spec_helper
--format documentation
--order random
--color
Ejecutar las migraciones
rake db:migrate
arrancamos servidor
rails s
la aplicacion corre en http://localhost:3000
rails g scaffold Provider active:boolean name:string nif_cif:string address:string cp:string city:string region:string day:string note:text
rails generate model Provider active:boolean name:string nif_cif:string address:string cp:string city:string region:string day:string note:text
rails g controller Providers index
rails g scaffold Provider active:boolean name:string nif_cif:string address:string cp:string city:string region:string day:string note:text
rake db:migrate
rails g rspec:scaffold Provider
a;adir a /db/seeds.rb
require 'csv'
path = Rails.root.join('lib', 'seeds', "Providers.csv")
CSV.foreach(path, :headers => true, encoding: "UTF-8") do |row|
Provider.create(row.to_hash)#Model is the name of your model
end
poner los archivos csv en /lib/seeds/
rails db:seed
provider->contact
rails g migration addprovideridtocontacts provider:references
rails db:migrate
Añadimos la relacion a models
class Provider < ApplicationRecord
has_many :contacts
end
class Contact < ApplicationRecord
belongs_to :provider
end
provider<->certificate
rails generate model Certificate name:string image:string
creamos la tabla de union
rails g model Providercertificate provider:belongs_to certificate:belongs_to
ejecutar migracion
rails db:migrate
a;adira al controlado de provider Certificados
para mostrarlo en new
# GET /providers/new
def new
@provider = Provider.new
@certificates = Certificate.all
end
para guardarlo en create
# POST /providers
def create
@provider = Provider.new(provider_params)
@provider.certificates = params[:certificates]
a;adir a las vista para que los muestre app/views/provider/_form.html.erb
<div class="field">
<label>Certificados</label>
<% @certificates.each do |c| %>
<div class="field"><%= check_box_tag "certificates[]", c.id %> <%= c.name%></div>
<% end %>
</div>
aadir al model de provider para que los reciba y almacene
```
aftercreate :savecertificates
def certificates=(value)
@certificates = value
end
def savecertificates
@certificates.each do |certificateid|
Providercertificate.create(certificateid: certificateid, provider_id: self.id)
end
end
```
añadira a los strong parameters
certificates
añadir la asociacion a los models
class Provider < ApplicationRecord
has_many :providercertificates
has_many :certificates, through: :providercertificates
end
class Certificate < ApplicationRecord
has_many :providercertificates
has_many :providers, through: :providercertificates
end
otra forma es
class Provider < ApplicationRecord
has_many :provider_certificates
has_many :certificates, through: :provider_certificates
end
class Providercertificate < ApplicationRecord
belongs_to :provider
belongs_to :certificate
end
class Certificate < ApplicationRecord
has_many :provider_certificates
has_many :providers, through: :provider_certificates
end