Подтвердить что ты не робот

ActiveRecord:: HasManyThroughAssociationNotFoundError в UserController # welcome

У меня есть много-много отношений в рельсах. Все таблицы базы данных называются соответственно и соответственно. Все файлы моделей являются множественными и используют подчеркивание для разделения слов. Все соглашения об именах сопровождаются стандартами рубинов и рельсов. Я использую в своих моделях многое:

has_many :users, :through => :users_posts #Post model
has_many :posts, :through => :users_posts #User model
belongs_to :users #UsersSource model
belongs_to :posts #UsersSource model

Чего еще может произойти эта ошибка?

ActiveRecord::HasManyThroughAssociationNotFoundError in UsersController#welcome Could not find the association :users_posts in model Post

4b9b3361

Ответ 1

Вам необходимо определить модель объединения как отдельную ассоциацию при использовании has_many :through:

class Post < ActiveRecord::Base
  has_many :user_posts
  has_many :users, :through => :user_posts
end

class User < ActiveRecord::Base
  has_many :user_posts
  has_many :posts, :through => :user_posts
end

class UserPost < ActiveRecord::Base
  belongs_to :user # foreign_key is user_id
  belongs_to :post # foreign_key is post_id
end

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

Если вам просто нужна простая таблица соединений, проще использовать старый синтаксис HABTM:

class User < ActiveRecord::Base
  has_and_belongs_to_many :posts
end

class Post < ActiveRecord::Base
  has_and_belongs_to_many :users
end