這裏是我的模型accepts_nested_attributes_for的has_many:通過創建和刪除加入模型對象,這取決於其他型號
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。
它在控制檯中工作得很好,但不適用於窗體。 我試圖用accepts_nested_attributes_for和嵌套字段的形式
<%= 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 %>
有了這種形式,我可以很容易地修改任何條目。但不能正確添加或刪除。此外,這種形式允許修改用戶,這很麻煩。 我正在尋找一種方法來創建和刪除Project的UserRoles,同時保持用戶安全。
我試圖做一個虛擬屬性 - UserRole的電子郵件,它將鏈接到用戶的實際電子郵件屬性,但失敗。
整個情況看起來好像我對這個問題採用了錯誤的方法。請指教。
忘了添加:Rails 5.0.2版,Ruby ruby 2.3.1p112 –