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

18
задан tshepang 17 December 2013 в 20:20
поделиться

1 ответ

Вам нужно определить модель соединения в качестве отдельной ассоциации при использовании HAS_MANY: через :

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
38
ответ дан 30 November 2019 в 07:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: