Я создаю веб-приложение для обмена фотографиями с использованием Rails 3.1. Я просто хочу убедиться, что я правильно понял ассоциации.
Некоторый контекст: A User
имеет много Share
. A Share
имеет один User
(то есть " sharer "), один Photo
и много Receiver
. A Receiver
является произвольным User
.
Причина, по которой я использую сквозную связь, заключается просто в том, что я хочу сохранить дополнительные данные для каждого получателя общей фотографии.
class Photo < ActiveRecord::Base
has_many :shares
end
class Receiver < ActiveRecord::Base
belongs_to :share
belongs_to :user
end
class Share < ActiveRecord::Base
belongs_to :photo
belongs_to :user
has_many :receivers
has_many :users, :through => :receivers
end
class User < ActiveRecord::Base
has_many :receivers
has_many :shares, :through => :receivers
end
Получение User
общих фотографий может быть выполнено с использованием метода shares
class?
User.first.shares
# => [<#Share:0x000>, ...]
Получение User
полученных акций может быть затем выполнено с использованием метода класса receivers
?
User.first.receivers
# => [<#Receiver:0x000>, ...]
Правильно ли я понял?