我正在尝试保存到 habtm 关系中的联接表,但遇到问题。
在我看来,我传递的组 ID 为:
<%= link_to "Create New User", new_user_url(:group => 1) %>
# User model (user.rb)
class User < ActiveRecord::Base
has_and_belongs_to_many :user_groups
accepts_nested_attributes_for :user_groups
end
# UserGroups model (user_groups.rb)
class UserGroup < ActiveRecord::Base
has_and_belongs_to_many :users
end
# users_controller.rb
def new
@user = User.new(:user_group_ids => params[:group])
end
在新的用户视图中,我可以访问 User.user_groups 对象,但是当我提交表单时,它不仅不会保存到我的联接表(user_groups_users)中,而且该对象不再存在。除了用户组之外,我的用户对象的所有其他对象和属性都是持久的。
我刚刚开始学习 Rails,所以也许我在概念上遗漏了一些东西,但我一直在努力解决这个问题。
您是否考虑过将用户添加到控制器中的组中,而不是使用accepts_nested_attributes_for?这样你就不需要来回传递 user_group_id 。
在users_controller.rb中:
def create
@user = User.new params[:user]
@user.user_groups << UserGroup.find(group_id_you_wanted)
end
这样,您还可以阻止人们修改表单并将自己添加到他们想要的任何组中。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)