Ответ 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