У меня есть многие многим отношения в направляющих. Все таблицы базы данных называют соответственно и соответственно. Все образцовые файлы являются множественным числом и используют подчеркивание для разделения слов. Все конвенции именования сопровождаются стандартами направляющих и рубином. Я использую, имеет многих через в моих моделях как это:
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
Вам нужно определить модель соединения в качестве отдельной ассоциации при использовании 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