关于将家庭成员添加到帐户的 Rails 数据库建议 [关闭]

Posted

技术标签:

【中文标题】关于将家庭成员添加到帐户的 Rails 数据库建议 [关闭]【英文标题】:rails database advice on adding family members to accounts [closed] 【发布时间】:2021-04-21 18:52:42 【问题描述】:

我不喜欢乱七八糟的,我有一个网站,可以让人们创建帐户和注册锦标赛。我希望用户能够将他们的未成年子女添加到他们的帐户中。我最初的想法是使用 parent_id 将孩子添加到 users 表中,但想对此有所了解。

我正在尝试使用表单从用户的显示页面添加它们,但如果我创建一个 form_with(@user... 当然它会输入 current_user 的信息并编辑该帐户。

我应该创建一个未成年人或儿童表,然后创建一个 user_minors 表并以这种方式链接它们,还是只添加未成年人表并使用 form_tag 并指定不同的模型或类似的东西。

我希望这是有道理的。如果没有,请告诉我,我可以编辑问题。

【问题讨论】:

【参考方案1】:

Parent has_many :children.

您可以使用嵌套路由:

resources :parents do
  resources :children
end

这样,您可以先创建一个父级,然后再添加一个按钮(例如在 Parent#index 中),链接到:/parents/1/children/new,如下所示:

<%= link_to 'Add Child', new_parent_child_path(@parent) %>

在您的表单中(例如在app/views/childrens/_form.html.erb)中,您可以创建如下表单:

<%= form_with model: [@parent, @child] do |form| %>
    <%= form.label :name %>
    <%= form.text_field :name %>

    <%= form.submit%>
<% end %>

这将向您发送一个 POST ChildrenController#create(或 #update),如果是编辑)

你可以这样做:

class ChildrenController < ApplicationController
  before_action :parent
  before_action :child, only: %i[create]

  def new
    @child = @parent.children.new
  end

  def create
    if @child.save
      flash[:success] = 'Child was successfully created.'
      redirect_to locations_path
    else
      flash.now[:danger] = @child.errors.full_messages.join('<br />').html_safe
      render :new
    end
  end

  private

  def parent
    # get your current_user from session controller
    @parent = current_user.parents.find_by(id: params[:id])
  end

  def child
    @child = parent.children.new(child_params)
  end

  def child_params
    params.require(:child).permit(:name)
  end

【讨论】:

以上是关于关于将家庭成员添加到帐户的 Rails 数据库建议 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

如何将我的 redmine 帐户分享给添加到我的项目中的其他成员

将 :default => true 添加到现有 Rails 列中的布尔值

Rails:您的用户帐户不允许安装到系统 RubyGems

Rails PayPal 概念验证

如何在 Excel 中的非度量维度(帐户)中显示比率成员

关于校园霸凌,刚刚发生(解决问题之霸凌方家庭操作建议)