关于将家庭成员添加到帐户的 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 帐户分享给添加到我的项目中的其他成员