以下是我当前的数据库设置:https://gist.github.com/8dfad988528fc9fbc394
我想创建一个主机,只要它不存在(匹配on:host和:port),然后我想将该主机的关系添加到关系表中。
多个用户可以拥有一个主机,或者一个主机可以属于多个用户。我当前的数据库设置工作,并创建了关系,我只是不确定如何在Rails中优雅地执行此操作。我已经通过手动输入数据库来测试到这一点,如下所示:
@host = Host.find_or_create_by_host(host: params[:host], port: params[:port])
@user = User.find(1)
@user.relation.create(user_id: @user.id, host_id: @host.id)
有没有更好的方法来做到这一点,如果是这样的话。
@host = Host.where(host: params[:host], port: params[:port]).first_or_create
@host.users << User.find(1)
答案 0 :(得分:2)
你可以做到
host.users << User.find(1)
应该是这样的: - )
答案 1 :(得分:1)
只需使用它,ActiveRecord就会处理关系:
@host = Host.find_or_create_by_host(host: params[:host], port: params[:port])
@user = User.find(1)
@user.hosts << @host
@user.save