目标如下:
“用户”拥有一个“房间”,他可以直接或通过“项目”向其添加“资产”,并组建一个团队来交付“资产”。
我对“属于”和“多态”关联感到迷茫。
我打算这样做:
class Room < ApplicationRecord
belongs_to :user
has_many :projects
end
class User < ApplicationRecord
has_many :rooms
has_many :projects
has_many :teams
end
class Team < ApplicationRecord
has_many :projects, dependent: :destroy
has_many :users
accepts_nested_attributes_for :users, allow_destroy: true
end
class Project < ApplicationRecord
belongs_to :team
belongs_to :user
belongs_to :room
accepts_nested_attributes_for :team
end
class Asset < ApplicationRecord
belongs_to :project
belongs_to :room
end
评论:
1°我正在使用dependent:destroy选项来销毁团队,以防项目被破坏。
2°如果有帮助,可以将团队(1)和项目(许多)之间的关系转换为一对一关系。
3°,我想保留通过项目或直接在没有项目的情况下创建资产的可能性。
问题:
我朝正确的方向前进吗?我不确定如何将各种模型付诸实践。
例如,通过项目控制器创建一个新项目:
<%= link_to new_project_path, class:'link' do%> on
@project = current_user.room.projects.build
返回初始化常量错误。
请问您将使用哪种类型的关联?