は私のモデル:を通じて作成し、モデルオブジェクトを結合を削除、他のモデルに応じて、ここで
class User < ApplicationRecord
has_many :user_roles, dependent: :destroy
has_many :projects, through: :user_roles
has_secure_password
end
class UserRole < ApplicationRecord
belongs_to :user
belongs_to :project
accepts_nested_attributes_for :user
end
class Project < ApplicationRecord
has_many :user_roles, dependent: :destroy
has_many :users, through: :user_roles
accepts_nested_attributes_for :user_roles
end
ている現在、私は、プロジェクトの作成フォームに複数のUserRoleエントリを作成するための適切な方法を把握しようとしています。
UserRoleには、user_id、project_id、およびroleが格納されます。
実際の問題:UserRoleのフォーム入力はユーザーの電子メールです。つまり、そのような電子メールを持つユーザーを見つけ、そのユーザーが自分のIDを取得してUserRole.user_idに保存する必要があります。
これはコンソールでうまく動作しますが、フォームではうまく動作しません。 は、私は簡単に任意の項目を変更することができます。このフォームでフォームに
<%= form_for @project do |f| %>
# project fields
<%= f.fields_for :user_roles do |role_f| %>
# user role fields
<%= role_f.fields_for :user do |user_f| %>
# user fields
<% end %>
<% end %>
<% end %>
をaccepts_nested_attributes_forとネストされたフィールドを使用しようとしました。しかし、追加や削除は正しくできません。また、このフォームは、ユーザーを変更することができ、それは面倒です。 私は、Userの安全を維持しながら、ProjectのUserRolesの作成と削除のみを行う方法を探しています。
ユーザーの実際の電子メール属性へのリンクになりますが、失敗したUserRoleの電子メールを作成しようとしました。
私はこの問題に間違ったアプローチをしているように見えます。ご意見をお聞かせください。
忘れてしまった:Railsバージョン5.0.2、Ruby ruby 2.3.1p112 –