Я использую Ruby on Rails 3 и пытаюсь создать плагин для использования в промежуточном программном обеспечении Rack .Это первый раз, когда я делаю это, поэтому будьте терпеливы, если я напишу что-то неправильно.
Мне нужно вызвать метод на ActiveRecord после запуска find
метод.То есть я хотел бы сделать что-то вроде этого:
@accounts = Account.find([1,2,3]).to_page
Метод to_page
должен изменить некоторую информацию в данных @accounts
без изменения самой структуры объекта (например, если «оригинал»)@accounts
- это массив, он должен оставаться массивом.)
На данный момент в папке моего плагина у меня есть следующие файлы:
# init.rb
require 'sl_pagination'
ActiveRecord::Base.send(:include, SlPagination)
#sl_pagination.rb
module SlPagination
extend ActiveSupport::Concern
module ClassMethods
def to_page
# see below for more info
end
end
module InstanceMethods
#none
end
end
В промежуточном программном обеспечении Rack у меня есть:
require 'sl_pagination'
...
Если в промежуточном программном обеспечении я использую Account.find([1,2,3]).to_page
объявление
#sl_pagination.rb
def to_page
return "Test_account_page"
end
, оно будет работать, и я также получу значение Test_account_page, но я не могунайдите решение изменить и вернуть сам ActiveRecord, как написано выше.Итак, как я могу изменить ActiveRecord?
Я пытался "играть" на self
и return self
в методе to_page
, но швы не работают.Я также подумал использовать acts_as_something
, но я все еще должен изучить и понять это (если вы объясните, когда используете acts_as
, это излишек! :-)).Кроме того, я не знаю, может ли последнее решение помочь мне выполнить то, к чему я стремлюсь.