Как расширить activrerecord, просто сделайте id для id.to_i - PullRequest
0 голосов
/ 29 апреля 2010
module ActiveRecord
  module Mixin

    alias old_id id

    def id
      old_id.to_i
    end

    def hello
      "hellooooooooooooo"
    end

  end
end


ActiveRecord::Base.send :include, ActiveRecord::Mixin

Я делаю, потому что:

Столбец id в oracle - это тип числа, а не число (10), @ user.id возвращает 123.0, а не 123, поэтому я хотел бы сделать это по расширению ar.

Но мой путь выше не работает для меня, он по-прежнему показывает число с точкой ноль, 123.0.

Как сделать автоматическое добавление идентификатора id.to_i ???

Ответы [ 2 ]

0 голосов
/ 29 апреля 2010

Вы хотите alias_method_chain ( документы ):

def id_with_oracle
  id_without_oracle.to_i
end
alias_method_chain :id, :oracle

Но это может не сработать.Поскольку функция id динамически генерируется из магии method_missing ActiveRecord.

0 голосов
/ 29 апреля 2010

Попробуйте

def new_id
  return self.to_i
end

Тогда

@user.new_id
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...