0

これが私の現在のデータベース設定です: https://gist.github.com/8dfad988528fc9fbc394

そのようなホストがまだ存在しない場合にのみホストを作成し (:host と :port で一致)、そのホストの関係を関係テーブルに追加したいと考えています。

複数のユーザーが 1 つのホストを所有することも、1 つのホストが複数のユーザーに属することもできます。私の現在のデータベース設定は機能し、リレーションが作成されました。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)
4

2 に答える 2

2

できるよ

host.users << User.find(1)

それだけです:-)

于 2012-05-24T18:45:17.437 に答える
1

これを使用するだけで、ActiveRecordが関係を処理します。

@host = Host.find_or_create_by_host(host: params[:host], port: params[:port])
@user = User.find(1)
@user.hosts << @host
@user.save
于 2012-05-24T18:43:58.750 に答える