寻找通过react-redux-rails应用程序中的关联来处理has_many的正确方法

时间:2017-08-29 06:35:39

标签: ruby-on-rails reactjs

我有一个带有富客户端(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将被呈现(仅用户,当前问题没有其他内容)。

我从两个选项中选择:

  1. IssuesController#update传递给params,通过issues_participant_ids: []操作更新所选用户的问题。请注意,我们现在没有采取此行动,因为在今天之前不需要这样做。

  2. 通过IssueParticipant操作创建IssueParticipantsController#create条记录。

  3. 两种选择都有效。在可预测的后果背景下应该优先选择哪一个?

1 个答案:

答案 0 :(得分:0)

我解决了问题,支持选项编号1,因为单独创建相关实体issue_participants会导致后续issue更新出现问题。

如果我们在issue表单的上下文中工作,我们应该另外请求了解哪些用户已经与问题相关,而不是从issue对象中获取这些用户。

但是如果我们通常将issue_participants更新为issue属性,我们使用默认的rails params行为并保持在RoR框架约定中。