rails: ActiveSuppor::ModelName の用途(メモ)

Blog および BlogArticle というモデルがあって、次のようにルーティングを設定したとする。


map.resources :blogs do |blog|
blog.resources :articles, :controller => 'blog_articles'
end

今、変数 @blog, @article にそれぞれ Blog, BlogArticle のインスタンスが格納されているとしよう。

ここで、コントローラの中で次のように書くと、


url_for([ @blog, @article ])

blog_blog_article_path メソッドが存在しないというエラーが出る。

これを解消するには、どうするか。

app/models/blog_article.rb に次のように記述すればよい。


class BlogArticle < ActiveRecord::Base
class << self
def model_name
@model_name ||= ActiveSupport::ModelName.new('article')
end
end
end