Вы можете написать свои собственные методы:
def has_many?(association)
self.class.reflect_on_all_associations(:has_many).any?{|a| a.name == association}
end
def belongs_to?(association)
self.class.reflect_on_all_associations(:belongs_to).any?{|a| a.name == association}
end
так
Post.all.each do |post|
post.has_many?('tags') ? "yeap" : "nope"
post.belongs_to?('category') ? "yeap" : "nope"
end
Или вы можете использовать простую конструкцию:
Post.all.each do |post|
post.methods.include?('tags') ? true :false
post.methods.include?('category') ? true :false
post.methods.include?('name') ? true :false
end
UPD
Или, как вы правильно указали, вы можете использовать respond_to?
post.respond_to? :comments