2013-02-12 5 views
1

Я делаю запрос ActiveRecord, который объединяет содержимое каждой из моих моделей в массив с именем @contents. Но мне нужно отображать контент, отличный от данных, полученных из конкретной модели.Получить модель объекта активной записи в

Так на мой взгляд, мне нужно выполнить какое-то испытание на элементах моего массива:

<% @contents.each do |c| %> 
    <article> 
    <% if [TEST FOR EVENT] %> 
     EVENT HTML 
    <% elsif [TEST FOR POST] %> 
     POST HTML 
    <% end %> 
    </article> 
<% end %> 

Как я могу получить модель, которая исходит от c?

ответ

1

Это может сделать трюк:

c.kind_of?(Event) #=> true or false 

Углубляясь: Ruby: kind_of? vs. instance_of? vs. is_a?

Моя короткая версия сравнения:

3.class #=> Fixnum 
3.is_a? Integer #=> true 
3.kind_of? Integer #=> true 
3.instance_of? Integer #=> false 
# is_a? & kind_of? can 'detect' subclasses, when instance_of? does not 
+0

Принять через 4 минуты. Спасибо за ссылку на различия между kind_of и is_a и instance_of. – alt

+1

Существует также «case c, когда Event then ...». –

1

Вы можете использовать метод is_a?.

<% if c.is_a?(Event) %> или <% if c.is_a?(Post) %>

Просто передайте имя класса.

Смежные вопросы