【发布时间】:2015-12-03 00:23:37
【问题描述】:
我正在尝试设置共享项目。我将如何使用 postgresql 在 Rails 中执行此操作?
现在用户有_many 个项目。我希望用户能够与其他用户共享项目,但仍然拥有这些项目。所以 users has_many items 和 items has_many users。我不能做 has_and_belongs_to_many 因为我希望项目的所有者拥有与共享用户不同的权限。我将如何设置关系?项目是否应该有一个以某种方式指向用户的 shared_id?
编辑:这是有效的
#user.rb
has_many :items
has_many :sharrings
has_many :shared_items, :foreign_key => "item_id", :through => :sharrings, :source => :item
#user.rb
belongs_to :user
has_many :sharrings
has_many :shared_users, :foreign_key => "user_id", :through => :sharrings, :source => :user
#sharring.rb
belongs_to :shareduser
belongs_to :item
# create sharring
@item.sharrings.build :user_id => other_user.id
# get items shared with this user
@shared_items = current_user.shared_items
【问题讨论】:
标签: ruby-on-rails activerecord schema