Все, что вам нужно сделать, это прочитать Rails Guides и применить все, что вы узнали.
Как правило, вам необходимо хранить информацию о:
- пользователе, который создал «общего доступа»
- пользователя или группу или любого другого объекта, являющегося целью действия общего доступа
- ресурс, который используется совместно
Итак:
class SharedItem < ActiveRecord::Base
belongs_to :sharable, :polymorphic => true #this is user, please think of better name than "sharable"...
belongs_to :resource, :polymorphic => true #can be your file
belongs_to :user
end
Вам необходимо, чтобы SharedItem имел:
user_id: integer, sharable_id: integer, sharable_type: string, resource_id: integer, resource_type: string
Тогда вы можете получить "методы""вы указали, написав именованные области как:
named_scope :for_user, lambda {|user| {:conditions => {:user_id => user.id} }}
или указав соответствующие ассоциации:
class File < ActiveRecord::Base
has_many :shared_items, :as => :resource, :dependent => :destroy
end