совмещение методов find_by в рельсах ActiveRecord - PullRequest
4 голосов
/ 21 ноября 2010

Так вот в чем проблема, так как методы find_by в AR используют технику отсутствия методов, вы не можете фактически присвоить им псевдоним alias_method (потому что метод не существует!).Или так кажется.

Кто-нибудь знает, как это сделать?

Чтобы дать более подробную информацию, я пытаюсь сделать следующее:

У меня естьмодель AR, Пользователь, но она добавляет некоторые свои атрибуты из вторичного источника данных - это должно быть поведение по умолчанию.Первоначально для достижения этого я использовал обратный вызов after_find, а затем добавил свои новые атрибуты из второго источника данных.

Проблема в том, что я хочу иногда использовать методы find_by БЕЗ дополнения из второго источника данных.

Теперь я подумал о том, чтобы использовать псевдонимы для создания двух разновидностей методов find_by: find_by и find_without_by.

Идеально было бы, если бы у rails был какой-то волшебный соус, позволяющий использовать подстановочные знаки в alias_methodведет к:

alias_method: find_without *,: find *

есть предложения?Я могу уточнить любые конкретные моменты, если это необходимо.

Заранее спасибо!

1 Ответ

3 голосов
/ 21 ноября 2010

Вы можете определить method_missing в ваших собственных моделях, а затем перейти к обычному методу, отсутствующему, если это вызов find_without_abc:

MyModel < ActiveRecord::Base
  def method_missing(method, *args)
    return super(method, args) if method =~ /find_without/

    # Your custom find code is here...
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...