Ошибки при использовании ассоциации has_many :through

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

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

модели /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

Я получаю ошибки, подобные следующим в моих спецификациях:

   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, прежде чем разрешить создание домена в таблице доменов. Это возможно?


person Arosboro    schedule 12.02.2012    source источник
comment
Я не думаю, что это связано, но я озадачен объявлениями :foreign_key для инструкций has_many :domain_followings в User and Domain. Мне кажется, что они перевернуты (а если не специально, то надо убрать).   -  person Baldrick    schedule 13.02.2012
comment
Это вызывало проблемы при сохранении отношений. У меня также были проблемы, потому что модель отношений была множественной, а не единственной. Я исправил эти вещи, и это работает лучше, но все еще есть проблемы с большим количеством функций.   -  person Arosboro    schedule 13.02.2012


Ответы (1)


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

person Arosboro    schedule 15.02.2012