这里是我的模型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 –