ITF-tkd
(ITF-tkd)
1
Hi!
I have the following classes for postgres rails 4 project :
class Medhospital < ActiveRecord::Base
belongs_to :pcp
belongs_to :hospital
validates_uniqueness_of :pcp_id, :scope => :hospital_id
end
class Pcp < ActiveRecord::Base
has_many :scheds
has_many :medhospitals, dependent: :destroy
has_many :hospitals, through: :medhospitals
has_many :patients, through: :scheds
accepts_nested_attributes_for :medhospitals, reject_if: :all_blank, allow_destroy: true
end
class Hospital < ActiveRecord::Base
has_many :scheds
has_many :medhospitals
has_many :pcps, through: :medhospitals
end
``
I am forcing the error to test and the validation for the uniqueness it is not working instead I get this exception:
PG::UniqueViolation - ERROR: duplicate key value violates unique constraint “index_medhospitals_on_pcp_id_and_hospital_id”
BTW I am testing manually from a view form.
Am I doing something wrong ?
Thanks
-Luis
Colin_Law
(Colin Law)
2
Show us the code are you using to save it.
Colin
ITF-tkd
(ITF-tkd)
3
Here is the code you ask Colin:
_form
simple_form_for @pcp do |f|
= f.error_notification
.form-inputs.row.col-md-12
= f.input :name
= f.input :last
= f.input :phone1
= f.input :phone2
= f.input :bod
= f.input :esp
=f.simple_fields_for :medhospitals do |hospital|
= render ‘medhospital_fields’ , f: hospital, hindex: hcnt
= link_to_add_association ‘Add a hospital’, f, :medhospitals
.form-actions
= f.button :submit
``
_medhopital_fields:
.nested-fields.hosplital-fields
= f.association :hospital ,label: “Hosplital”, collection: Hospital.all, label_method: :name, prompt: “Select Hospital”
= link_to_remove_association “Remove”, f
``
Colin_Law
(Colin Law)
4
I don't see any code there that saves a record.
Colin
ITF-tkd
(ITF-tkd)
5
That is all I have, The controller have nothing special all is basic and default. Well not quite, I am using
cocoon gem for the nested forms but other than that is pretty vanilla.
Thanks.
class PcpsController < ApplicationController
before_action :set_pcp, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!
def new
@pcp = Pcp.new
end
def create
@pcp = Pcp.new(pcp_params)
respond_to do |format|
if @pcp.save
format.html { redirect_to @pcp, notice: ‘Pcp was successfully created.’ }
format.json { render :show, status: :created, location: @pcp }
else
format.html { render :new }
format.json { render json: @pcp.errors, status: :unprocessable_entity }
end
end
end
end
``
Colin_Law
(Colin Law)
6
That is all I have, The controller have nothing special all is basic and
default. Well not quite, I am using
cocoon gem for the nested forms but other than that is pretty vanilla.
Please quote the previous message when replying, it makes it easier to
follow the thread. Thanks.
Does your medhospital unit test, that checks the validation, pass ok?
Colin
ITF-tkd
(ITF-tkd)
7
There is no unit test for this.
Colin_Law
(Colin Law)
8
There is no unit test for this.
Then the solution is obvious. Write one.
Colin