Не могу обернуть голову вокруг этого ...
class User < ActiveRecord::Base
has_many :fantasies, :through => :fantasizings
has_many :fantasizings, :dependent => :destroy
end
class Fantasy < ActiveRecord::Base
has_many :users, :through => :fantasizings
has_many :fantasizings, :dependent => :destroy
end
class Fantasizing < ActiveRecord::Base
belongs_to :user
belongs_to :fantasy
end
... что отлично подходит для моих первичных отношений, в которых User
может иметь много Fantasies
, а Fantasy
может принадлежат ко многим Users
.
Однако мне нужно добавить еще одно отношение для liking (например, User
"любит" a Fantasy
, а не "имеет" это ... думаю о Facebook и о том, как вы можете «любить» пост на стене, даже если он не «принадлежит» вам ... на самом деле, пример Facebook - почти то, к чему я стремлюсь).
Я понял, что мне следует создать еще одну ассоциацию, но я немного озадачен тем, как я мог бы использовать это, или если это даже правильный подход. Я начал с добавления следующего:
class Fantasy < ActiveRecord::Base
...
has_many :users, :through => :approvals
has_many :approvals, :dependent => :destroy
end
class User < ActiveRecord::Base
...
has_many :fantasies, :through => :approvals
has_many :approvals, :dependent => :destroy
end
class Approval < ActiveRecord::Base
belongs_to :user
belongs_to :fantasy
end
... но как мне создать ассоциацию через Approval
, а не через Fantasizing
?
Если бы кто-то мог объяснить мне это, я был бы очень признателен!