如何使一件事属于可选事物而另一件事属于强制事物

时间:2018-08-30 17:58:56

标签: ruby-on-rails belongs-to

我有一个Folder模型和一个Project模型,如下所示:

class Folder < ApplicationRecord
  belongs_to :project
  belongs_to :owner, polymorphic: true
end

我正在为以下项目创建一个文件夹:

folder = @project.folders.new(folder_params).merge(owner: current_user)
folder.save 

我想为与以下项目无关的用户使用相同的Folder模型:

folder = current_user.folders.new(folder_params)
folder.save

我也有一个用户模型:

has_many :folders, as: :owner

在为项目创建时,我是否可以使belongs_to :project为强制性项目,为用户创建时是否可以使class Folder < ApplicationRecord belongs_to :project belongs_to :owner, polymorphic: true belongs_to :folderable, polymorphic: true end 为强制性项目?

什么是实现此目标的最佳方法,即将相同模型用于两个目的。我正在考虑将文件夹变为具有文件夹的多态文件夹以及所有者,如下所示:

class Project < ApplicationRecord
  has_many :folders, as: :folderable
end

class User < ApplicationRecord
  has_many :folders, as: :owner
  has_many :folders, as: :folderable
end

user

是否也可以在我想为urlpatterns = [ url(r'^tools(?:/tool_one=(?P<tool_one>\w+))?/?$', views.ToolsViews.as_view(), name='tools'), ] 模型的同一个模型中声明两个多态性?

0 个答案:

没有答案