我正在使用Ruby on Rails 3,並試圖創建一個插件以用於Rack 中間件。這是我第一次做這個經歷,所以如果我寫了一些錯誤,請耐心等待。插件實現:如何調用ActiveRecord上的方法?
我需要的是運行find
方法後調用方法一個ActiveRecord。也就是說,我願做這樣的事情:
@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
時,它是一個剩餘!:-))。此外,我不知道後一種解決方案是否可以幫助我實現我的目標。
您如何修改數據? – errorhandler 2011-03-14 21:05:33
我猜你給分頁只是一個例子,你正在嘗試做一些更有用的事情 – Selva 2011-03-15 12:01:50
@errorhandler我必須建立一個散列,並添加ActiveRecord值和一些其他信息。 – user502052 2011-03-15 13:33:45