Ассоциация HABTM создана для создания отношения N к N, что вы хорошо сделали, но не очень пригодились.Ассоциация has_many создана для создания отношения 1-N и является хорошим выбором.
Вам необходимо:
- добавить has_many: предпочтения в вашей модели пользователя (так же, каквы сделали)
- добавьте принадлежность__: пользователя в вашей модели предпочтений
- добавление user_id в таблицы предпочтений
Обычно мы используем: through для связывания объектов, которые ненапрямую связаны, например, Пользователи соединились со статьями, потому что они опубликовали комментарий к некоторым статьям.
Другое полезное использование - это условные отношения NN, например, класс дружбы:
class Friendship < ActiveRecord::Base
belongs_to :user
belongs_to :friend, :class_name => "User"
end
class User < ActiveRecord::Base
has_many :friends, :through => :friendships, :conditions => "status = 'accepted'"
has_many :requested_friends, :through => :friendships, :source => :friend, :conditions => "status = 'requested'", :order => :created_at
has_many :pending_friends, :through => :friendships, :source => :friend, :conditions => "status = 'pending'", :order => :created_at
end
ДляПридерживаясь своих потребностей, вы можете сделать следующее:
#in you User model
has_many :notifications, :source => :preferences
has_many :privacies, :source => :preferences
#in your Preference model
belongs_to :user