Это долго, поэтому я надеюсь, что вы потерпите меня ...
У меня есть модель под названием Update с двумя подклассами, MrUpdate и TriggeredUpdate. Используя наследование одной таблицы, добавили поле типа в качестве строки для обновления.
На мой взгляд, я проверяю, какой это тип, чтобы решить, что отображать. Я предположил, так как тип является строкой, я должен сделать
<% if @update.type == 'MrUpdate' %>
Это не удалось, т. Е. Было установлено значение false, когда обновление было MrUpdate. Я заметил, что на этом этапе @ update.type.type - это Class. ОК, что угодно, подумал я, поэтому я изменил его на:
<% if @update.type == MrUpdate %>
и это сработало, т. Е. Сравнение оценивалось как истинное, когда обновлением был MrUdpate. Затем я сделал это снова, на мой взгляд, и снова произошел сбой (т. Е. Он был оценен как ложный, когда обновление было MrUpdate.)
Оказывается, виновником является пара <% = link_to ...%> вызовов, которые я использую и превращаю в кнопки с помощью jQuery. Если я поставлю этот код в моем представлении:
<br>
<%= @update.type.type %><br>
<%= @update.type %><br>
<%= link_to 'New Note', new_note_path(:update_id => @update.id), :class => "ui-button" %>
<br>
<%= @update.type.type %><br>
<%= @update.type %><br>
Что я вижу:
Class
MrUpdate
(the New Note button)
String
MrUpdate
Он меняется от класса к строке! Так что, черт возьми, я делаю неправильно или отсутствует здесь? Почему ссылка должна делать это? Во-первых, мне непонятно, почему это не строка в первую очередь, но потом я действительно не понимаю, почему это изменится ...?!? Любая помощь или объяснение будет полезно. Я могу просто закодировать это одним способом вверху и другим способом внизу, но в этом и заключается безумие. Мне нужно понять, почему это происходит.