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