2012-06-10 5 views
1

В приложении Rails 3, я пытаюсь написать семена (в дб/seeds.rb) для модели, которая использует friendly_id:friendly_id, осеменять базы данных, Неопределенный метод «friendly_id»

# /db/seeds.rb 
Page.create(:title => "Default page", :content => "Default content of the default page") 

Когда я бегу rake db:seed задача не работает. Ниже суть при работе с --trace:

rake aborted! 
undefined local variable or method `friendly_id' for #<Class:0x007fa1de992ac8> 
/Users/cornelius/.rvm/gems/[email protected]/gems/activerecord-3.2.5/lib/active_record/dynamic_matchers.rb:50:in `method_missing' 
/Users/cornelius/Sites/usg/app/models/page.rb:2:in `<class:Page>' 
/Users/cornelius/Sites/usg/app/models/page.rb:1:in `<top (required)>' 
... 

Вот модель:

# /app/models/page.rb 
class Page < ActiveRecord::Base 
    extend friendly_id 
    friendly_id :title, use: :slugged 
end 

Я использую friendly_id как Gem:

# /Gemfile 
gem 'friendly_id' 

Любая помощь?

+2

ли вы пытаетесь использовать "продлить FriendlyId"? –

+0

Документы (https://github.com/norman/friendly_id) предполагают, что это должно быть 'расширение FriendlyId', а не' extend friendly_id', но я не собираюсь писать такой ответ и украсть репутацию Дейва. – Shadwell

+2

@Shadwell Не волнуйся; ipd будет;) –

ответ

2

В вашей модели необходимо расширить класс должным образом, имя класса - FriendlyId, а не friendly_id.

Как правило, в Ruby и Rails имена классов CamelCase и имена файлов являются snake_case.

Ваша модель Страница следует читать:

class Page < ActiveRecord::Base 
    extend FriendlyId 
    friendly_id :title, use: :slugged 
end