validate_presence_of validate rails matchers have_many cleaner ruby-on-rails rspec shoulda

ruby-on-rails - validate - shoulda-matchers rubygems



Shoulda belongs_to con class_name y foreign_key (4)

Sé que puedes probar fácilmente una pertenencia a una relación usando Shoulda:

describe Dog dog it { should belong_to(:owner) } end

¿Es posible probar una relación más complicada con Shoulda? Algo como esto:

class Dog < ActiveRecord::Base belongs_to :owner, :class_name => "Person", :foreign_key => "person_id" end



Así que el README should-matchers con los detalles, solo con algunos ejemplos. Descubrí que hay mucha más información en el RDoc de las clases, en el caso de belongs_to echar un vistazo a association_matcher.rb . El primer método es para pertenecer a la Rdoc.

# Ensure that the belongs_to relationship exists. # # Options: # * <tt>:class_name</tt> - tests that the association makes use of the class_name option. # * <tt>:validate</tt> - tests that the association makes use of the validate # option. # # Example: # it { should belong_to(:parent) } # def belong_to(name)

Así que belongs_to solo admite pruebas para :class_name y :validate .



Sé que llego un poco tarde a la fiesta, por lo que mi solución podría requerir una versión actualizada de shoulda .

En el momento de escribir estoy en v 2.4.0 .

No necesitaba class_name o with_foreign_key en mi especificación.

Asegúrese de que haya especificado class_name y foreign_key en su modelo.

# model.rb: belongs_to :owner, inverse_of: :properties, class_name: "User", foreign_key: :owner_id # spec.rb: it { should belong_to(:owner) }

salida resultante

should belong to owner