0

私はherokuで奇妙な問題を抱えています.これは私が得るエラーです:

Rails 3.2.8、Ruby 1.9.3、アクティブな管理者、わかりやすい ID を使用しています。

/app/app/models/user.rb:2:in `<class:User>': uninitialized constant User::FriendlyId (NameError)

同じくpostgresを使用している私のローカル環境では、すべて正常に動作します...

ここに私のユーザーモデルがあります

class User < ActiveRecord::Base
  extend FriendlyId
  after_initialize :set_username
  before_create :set_as_student

  friendly_id :username, use: :slugged

  ROLES = %w[admin coordinator student]

  # Include default devise modules. Others available are:
  # :token_authenticatable, :confirmable,
  # :lockable, :timeoutable and :omniauthable
  devise :database_authenticatable, :registerable,
         :recoverable, :rememberable, :trackable, :validatable

  # Setup accessible (or protected) attributes for your model
  # attr_accessible :title, :body
  attr_accessible :email, :password, :password_confirmation, :remember_me,
                  :name, :code, :phone, :roles

  def roles=(roles)
    self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.inject(0, :+)
  end

  def roles
    ROLES.reject do |r|
      ((roles_mask || 0) & 2**ROLES.index(r)).zero?
    end
  end

  def role?(role)
    roles.include? role.to_s
  end

  def self.search(query)
    where do
      ((name =~ "%#{query}%") | (code =~ "%#{query}%"))
    end
  end

  def should_generate_new_friendly_id?
    new_record?
  end

  private
  def set_username
    self.username = self.email.split('@')[0]
  end

  def set_as_student
    self.roles=(['student'])
  end

end

Friendly_id を使用して何かを行う必要があると思いますが、何が問題なのかわかりません。助けていただければ幸いです。

皆さん、ありがとうございました。

4

1 に答える 1

0

Gemfile に :assets などのグループの Friendly_id を含める必要があります。そうしないと、プロダクション モード (アセット グループなしで実行されます) で見つけることができません。

https://github.com/norman/friendly_id/issues/326でデバッグ

于 2012-09-19T22:48:23.130 に答える