Pregunta sencillita


#1

Tengo un modelo del tipo:

class Comment < ActiveRecord::Base
belongs_to :commentable, :polymorphic => true
end

Y:

class Post < ActiveRecord::Base
has_many :comments, :as => :commentable, :dependent => :destroy
end

class MiniPost < ActiveRecord::Base
has_many :comments, :as => :commentable, :dependent => :destroy
end

Los Posts tienen un campo ‘visible’ que no tienen los ‘MiniPosts’.
Y tengo hecho un partial estándar que me pinta los comentarios, ya sean
los dejados a un Post o a un MiniPost:

<%

locals

parent = c.comentable # post o minipost
%>

<%= c.body %>

Lo que quiero es que si el comentario es del tipo Post y además no es
visible, no se muestre. Pero no puedo hacer:

parent.visible?

Porque si fuera un minipost, daría un error porque no existe ‘visible’.
¿Hay alguna forma de comprobar esto?

Pensaba en algo similar a parent.has_key?(:visible), pero esto
lógicamente no funciona.

Muchas gracias.


#2

Puedes preguntarle si responde a visible. Seria algo como
parent.respond_to?(:visible)

http://apidock.com/ruby/Object/respond_to%3F

2008/10/28 Tomás Arcos removed_email_address@domain.invalid


#3

Muchas gracias, me sirve !