Я пытаюсь создать 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, прежде чем разрешить создание домена в таблице домена. Это возможно?
Я не думаю, что это связано, но я озадачен декларациями ': foreign_key' для инструкций' has_many: domain_followings' в User and Domain. Мне кажется, что они перевернуты (и если это не специально, их следует удалить). – Baldrick
Это вызывало проблемы с сохранением отношений. У меня также были проблемы, потому что модель отношений была множественной, а не единственной. Я исправил эти вещи, и он работает лучше, но все еще есть проблемы с большой функциональностью. – Arosboro