2012-02-12 2 views
0

Я пытаюсь создать has_many: через ассоциацию, чтобы мои пользователи могли отслеживать Домены, создавая ассоциацию, добавляя их на свою страницу учетной записи.Ошибки Использование has_many: через ассоциацию

У меня есть следующие модели:

модели/user.rb

class User < ActiveRecord::Base 
    attr_accessor :password 
    attr_accessible :name, :email, :password, :password_confirmation 

    has_many :domain_followings, :foreign_key => "domain_id" 
    has_many :domains, :through => :domain_followings 

модели/domain_followings.rb

class DomainFollowings < ActiveRecord::Base 
    attr_accessible :domain_id 

    belongs_to :user 
    belongs_to :domain 
end 

модели/domain.rb

class Domain < ActiveRecord::Base 
    attr_accessible :name 

    has_many :domain_followings, :foreign_key => "user_id" 
    has_many :users, :through => :domain_followings 

Я получаю ошибки, такие как th е следующее в моей спецификации:

1) Users signup success should make a new user 
    Failure/Error: click_button 
    NameError: 
     uninitialized constant User::DomainFollowing 
    # ./app/controllers/users_controller.rb:32:in `show' 
    # ./spec/requests/users_spec.rb:32 
    # ./spec/requests/users_spec.rb:26 

Код в вопросе здесь:

def show 
    @user = User.find(params[:id]) 
    @title = @user.name 
    @domain = Domain.new if signed_in? 
    @domains = @user.domains.paginate(:page => params[:page]) 
    end 

неинициализированной константа User :: DomainFollowing повторяется несколько раз для другого кода. В идеале я хотел бы, чтобы мой код требовал ассоциации пользователя в таблице domain_followings, прежде чем разрешить создание домена в таблице домена. Это возможно?

+0

Я не думаю, что это связано, но я озадачен декларациями ': foreign_key' для инструкций' has_many: domain_followings' в User and Domain. Мне кажется, что они перевернуты (и если это не специально, их следует удалить). – Baldrick

+0

Это вызывало проблемы с сохранением отношений. У меня также были проблемы, потому что модель отношений была множественной, а не единственной. Я исправил эти вещи, и он работает лучше, но все еще есть проблемы с большой функциональностью. – Arosboro

ответ

0

Решение должно было переименовать модель отношений в models/domain_following.rb, что делает ее единственной. Также удалены объявления foreign_key после предложения Bladrick. Теперь все протекает плавно.

Смежные вопросы