我有一个带有富客户端(react + redux)和rails 5后端API的应用程序。
在第一次近似中,我们有3个模型
issue.rb
has_many:issue_participants,dependent :: destroy
has_many:参与者,通过:: issue_participants,class_name:'User'
issue_participant.rb
belongs_to:issue
belongs_to:participant,class_name:'User',foreign_key:'user_id'
和 user.rb
has_many:issue_participants,dependent :: destroy
has_many:问题,通过:: issue_participants
我想在前端添加参与者。这将发生在react组件中,其中带有用户集合的redux-form将被呈现(仅用户,当前问题没有其他内容)。
我从两个选项中选择:
将IssuesController#update
传递给params,通过issues_participant_ids: []
操作更新所选用户的问题。请注意,我们现在没有采取此行动,因为在今天之前不需要这样做。
通过IssueParticipant
操作创建IssueParticipantsController#create
条记录。
两种选择都有效。在可预测的后果背景下应该优先选择哪一个?
答案 0 :(得分:0)
我解决了问题,支持选项编号1,因为单独创建相关实体issue_participants
会导致后续issue
更新出现问题。
如果我们在issue
表单的上下文中工作,我们应该另外请求了解哪些用户已经与问题相关,而不是从issue
对象中获取这些用户。
但是如果我们通常将issue_participants
更新为issue
属性,我们使用默认的rails params行为并保持在RoR框架约定中。