Forum: Rails-ES Pregunta sencillita

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
Cf2d1cb659678230b4d7aa584ce0eb54?d=identicon&s=25 Tomás Arcos (torpedero69)
on 2008-10-28 12:43
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.
Eb24172664eda6fe8a2f39c91709b258?d=identicon&s=25 Albert Callarisa (xarc)
on 2008-10-28 13:16
(Received via mailing list)
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 <ruby-forum-incoming@andreas-s.net>
Cf2d1cb659678230b4d7aa584ce0eb54?d=identicon&s=25 Tomás Arcos (torpedero69)
on 2008-10-28 13:37
Muchas gracias, me sirve !
This topic is locked and can not be replied to.