Я должен был бы сказать , SimpleXML берет пирог, потому что это - во-первых расширение, записанное в C, и очень быстро. Но второй, проанализированный документ принимает форму объекта PHP. Таким образом, можно "запросить" как $root->myElement
.
find_by_foo - это не то, что вам нужно определять. ActiveRecord сделает это за вас, если у вас есть столбец с именем «foo». Добавление восклицательного знака, как и вы, вызовет исключение, если запись не найдена, в отличие от возврата nil без исключения, если вы не используете восклицательный знак.
Что касается вашей конкретной проблемы, вы добавили свой slug для публикации, но вы пытаетесь выполнить поиск в Project.
Это не обязательно прямой ответ на ваш вопрос, но смотрели ли вы плагин Stringex ( http://github.com/rsl/stringex )? Это отличный способ автоматически создавать ярлыки для ваших записей.
Вы можете просто добавить к своей модели что-то вроде следующего:
class Post < ActiveRecord::Base
acts_as_url :title
end
, и он автоматически создаст ярлыки из вашего заголовка и сохранит их в столбце ярлыков.
Это также действительно умно в том, как он создает слизней. Например, заголовок «Скидка 10%, только сегодня» превращается в «Скидка 10%, только сегодня».
Замечательно!