2010-09-12 20 views

Respuesta

19

Sin mucha piratería podría utilizar emblemática joya: http://github.com/carlosbrando/remarkable

Tomado de documentos notables:

describe Post do 
     it { should belong_to(:user) } 
     it { should have_many(:comments) } 
     it { should have_and_belong_to_many(:tags) } 
    end 
+0

muy agradable! Creo que puedo comenzar a usar esa gema. –

+3

Otra opción es Shoulda de thoughtbot, que tiene una sintaxis notablemente similar. http://github.com/thoughtbot/shoulda –

+0

Apariencia notable más completa que Shoulda. No lo he visto antes –

6

Puede reflexionar sobre la clase:

MyModel.reflect_on_association(:x).macro == :has_one 

Es probablemente más fácil si usted sólo tiene que utilizar Shoulda, existen métodos de ayuda para que se lea mucho más limpia: it { should have_many(:x) }

1

aquí es una solución independiente rspec, la clave es usar reflect_on_assocation

class MyModel < ActiveRecord::Base 
    has_many :children 
    belongs_to :owner 
end 

reflection_children = MyModel.reflect_on_association(:children) 

if !reflection_children.nil? 
    if reflection_children.macro == :has_many 
    # everything is alright 
    else 
    # it's not has_many but exists 
    end 
else 
    # it doesn't exist at all ! 
end 

reflection_owner = MyModel.reflect_on_association(:owner) 

if !reflection_owner.nil? 
    if reflection_owner.macro == :belongs_to 
    # everything is alright! 
    else 
    # it's not belongs_to but exists 
    end 
else 
    # it doesn't exist at all! 
end 
Cuestiones relacionadas