前島です。

railsのautoloadまわりが原因なのではないかという気がします。

■app/model/hoge.rb
class Hoge < ActiveRecord::Base
  include Foo
end

■lib/foo.rb
module Foo
   def added_method
   end
end

これだとどうでしょうか。



2013年4月10日 12:54 dezawa <dezawa@aliadne.net>:
出沢です

私の環境では呼び出せました。
activerecord (3.0.7, 2.3.11, 2.3.5, 2.2.3)
が入っていますが、試したのは 2.2.3 です。

久野さんのは
> activerecord (2.1.1)
ですね。
バージョンの問題?


(2013年04月10日 12:15), 久野孝泰 wrote:
> 久野と申します。
>
> ActiveRecord::Baseを継承したクラスにメソッドを追加する際、
> 機能の内容的にapp/model以下に追記するのが嫌だったので、
> lib以下にメソッドの追加記述を行ったのですが、
> 追加したメソッドが呼び出しできませんでした。
>
> どのようにすればメソッドの追加ができるでしょうか。
>
> -- 以下コード
> ■app/model/hoge.rb
> class Hoge < ActiveRecord::Base
> end
>
> ■lib/foo.rb
> class Hoge < ActiveRecord::Base
>     def added_method
>     end
> end
>
> ■config/environment.rb
> require 'lib/foo'
>
> ■実行
> $ script/console
>  > a = Hoge.new
>  > a.added_method
> NoMethodError: undefined method `added_method' for #<Hoge:0x7f6baa9d38d0>
>
> ■環境
> $ ruby -v
> ruby 1.8.7 (2011-06-30 patchlevel 352) [x86_64-linux]
>
> $ gem list
>
> *** LOCAL GEMS ***
>
> actionmailer (2.1.1)
> actionpack (2.1.1)
> activerecord (2.1.1)
> activeresource (2.1.1)
> activesupport (2.1.1)
> daemon_controller (1.0.0)
> domain_name (0.5.3)
> fastthread (1.0.7)
> json (1.7.5)
> mechanize (2.5.1)
> mime-types (1.19)
> net-http-digest_auth (1.2.1)
> net-http-persistent (2.7)
> nokogiri (1.5.5)
> ntlm-http (0.1.1)
> passenger (3.0.15)
> rack (1.4.1)
> rails (2.1.1)
> rake (0.9.2.2)
> rdoc (3.12)
> rmagick (2.13.1)
> ruby-ole (1.2.11.4)
> rubygems-update (1.8.24)
> rw_fastercsv (1.5.7)
> spreadsheet (0.7.3)
> unf (0.0.5)
> unf_ext (0.0.5)
> webrobots (0.0.13)
>


--
ML: rails@ruby.ml.fdiary.net
使い方: http://QuickML.com/



--
前島 真一(@netwillnet)
http://willnet.in/