【发布时间】:2016-10-17 11:37:02
【问题描述】:
我有一个与分配模型绑定的用户和组模型。一个用户 has_many 个组和一个组 has_many 个用户。但是,当我创建一个新组时,当我执行Group.last.users.count 时,输出为 0 或 ActiveRecord::Associations::CollectionProxy []。我是否需要更改我的 simple_form 的某个方面?我没有正确构建中间人模型来绑定用户和组吗?我希望这样当用户创建一个组时,group_ids 在执行User.last.groups 等操作时位于数组中。当我将它作为用户 has_many 组和组属于_to 用户时,组 id 将绑定到用户.但自从两个模型都切换到 has_many 并引入了 Assignments 模型后,情况就不再如此了。
组模型
class Group < ActiveRecord::Base
validates :user_id, presence: true
has_many :assignments
has_many :users, through: :assignments
has_many :posts
has_many :attachments
has_secure_token
end
用户模型
class User < ActiveRecord::Base
...
has_many :assignments
has_many :groups, through: :assignments
accepts_nested_attributes_for :assignments
...
分配模型
class Assignment < ActiveRecord::Base
belongs_to :group
belongs_to :user
accepts_nested_attributes_for :group
accepts_nested_attributes_for :user
end
组控制器
class GroupsController < ApplicationController
before_action :authenticate_user!
def new
@group = current_user.groups.build
end
def create
@group = current_user.groups.build(group_params)
@group.user_id = current_user.id
if @group.save
redirect_to groups_path
else
render :new
end
end
private
def group_params
params.require(:group).permit(:group_name, :description, :user_id)
end
end
组new.html.erb
<%= simple_form_for @group do |f| %>
<%= f.input :group_name %>
<%= f.text_area :description %>
<%= f.button :submit %>
<% end %>
【问题讨论】:
-
我强烈建议您在 rails 控制台中尝试一下,看看您是否遇到任何错误。
-
群组
has_many用户但拥有user_id属性?这似乎不对 -
这就是 Group.last.users ` => #<:associations::collectionproxy> ` 和 User.last.groups ` => #<:> `
标签: ruby-on-rails