2012-01-24 4 views
2

Ниже код работает без ошибок:неинициализированным константа Пользователь :: отношения с помощью @ blog.user.followers.build

= form_for @blog.comments.build, :remote => true do |f| 

Однако приведенные ниже результаты в ошибке «неинициализированного постоянного пользователя :: отношения»:

= form_for @blog.user.followers.build do |f| 

модель пользователя объявлена ​​как показано ниже:

class User < ActiveRecord::Base 
    has_many :blogs 
    has_many :comments 

    has_many :relationships, :foreign_key => "follower_id", :dependent => :destroy 
    has_many :reverse_relationships, :foreign_key => "followed_id", 
            :class_name => "relationship", 
            :dependent => :destroy 

    has_many :following, :through => :relationships, :source => :followed 
    has_many :followers, :through => :reverse_relationships, :source => :follower 
end 

Почему первый пример работы, но не HTE второй?

EDIT: Блог Модель:

class Blog < ActiveRecord::Base 
    belongs_to :user 
    has_many :comments 

end 

Отношения Модель:

class Relationship < ActiveRecord::Base 
    attr_accessible :followed_id 

    belongs_to :follower, :class_name => "User" 
    belongs_to :followed, :class_name => "User" 

    validates :follower_id, :presence => true 
    validates :followed_id, :presence => true 

    validate :validate_followers 

    def validate_followers 
    errors.add(:follower_id, "You cannot follow yourself") if follower_id == followed_id 
    end 
end 
+0

Не могли бы вы показать свою модель блога? Есть ли в блоге только один пользователь? –

+0

Это «has_many: blogs» вместо «has_many: users»? – BenB

+0

@timbrandes да каждый блог имеет только одного пользователя –

ответ

4

Если вы измените параметр :class_name на обратных отношений к:

:class_name => 'Relationship' 

вы все еще получаете проблема? Это должен быть правильный случай для имени класса, которое я считаю.

+1

В моем случае он писал ': class_name => 'Отношения'' вместо': class_name =>' Relationship'' – jmarceli