У меня "транзакция" (расширяет ActiveRecord ::Base ). У меня есть два разных типа транзакций: «Покупка» или «Пожертвование». Между ними достаточно совпадений, поэтому нет необходимости создавать две отдельные таблицы базы данных, поэтому у меня есть только одна таблица для транзакций со столбцом «тип элемента _».
Однако существуют разные методы и проверки для Покупки и Пожертвования, поэтому имеет смысл разделить их на два разных контроллера и модели. Вместо создания моделей ActiveBase (без таблиц )я пытаюсь использовать модули для каждой из них.
Вот как выглядит модуль «Покупка».
module Purchase
def self.included(base)
base.validates :amount,
:presence => true
end
def testing
"testing"
end
end
Вот как создается:(этот код находится в действии создания контроллера покупок )
@purchase = Transaction.new(params[:purchase]).extend(Purchase)
. Я могу позвонить @purchase.testing, и он возвращает «тестирование». Однако эта проверка не выполняется.
Если я включу модуль традиционным способом в модель транзакции с «включить покупку», то они сработают.
Любые идеи, как я могу сделать этот рабочий процесс? Я немного следил за этим:http://paulsturgess.co.uk/articles/84-how-to-include-class-and-validation-methods-using-a-module-in-ruby-on-rails