Ruby on rails 从InheritedResources中检索创建的对象#创建

Ruby on rails 从InheritedResources中检索创建的对象#创建,ruby-on-rails,inherited-resources,Ruby On Rails,Inherited Resources,在我的Rails应用程序中,我有以下对象: Group: has_many users through group_membership GroupMembership: belongs_to user, belongs_to group User: has_many groups through group_membership 用户可以创建组。发生这种情况时,我希望自动将用户添加到组中。在我的GroupsController中,我有以下内容(扩展InheritedResources): 问

在我的Rails应用程序中,我有以下对象:

Group: has_many users through group_membership
GroupMembership: belongs_to user, belongs_to group
User: has_many groups through group_membership
用户可以创建组。发生这种情况时,我希望自动将用户添加到组中。在我的GroupsController中,我有以下内容(扩展InheritedResources):


问题是我无法检索
super
创建的对象。有办法做到这一点吗?或者更好,是否有办法更改LockGroup模型,使其始终执行此关联?

我假定为您的组提供的参数键为:group。然后可以在模型中使用嵌套的属性作为选项。然后,您可以通过创建操作在before筛选器中设置这些选项:

class User < ActiveRecord::Base
  accept_nested_attributes_for :group_membership
end

# on your controller
before_filter :add_user, :on => [:create]

def add_user
  params[:group][:group_membership_attributes] = {}
  params[:group][:group_membership_attributes][:user] = current_user
end
class用户[:create]
def添加用户
参数[:组][:组成员资格属性]={}
参数[:组][:组成员资格\u属性][:用户]=当前用户
结束
或者在用户初始化时生成组成员身份:

class User < ActiveRecord::Base
  def after_initialize
    build_group_membership
  end
end


# on your controller
before_filter :add_user, :on => [:create]

def add_user
  params[:group][:user] = current_user
end
class用户[:create]
def添加用户
参数[:组][:用户]=当前用户
结束

它应该自动工作

当启动回调时,控制器已具有与所创建组相对应的标准实例变量:
@group

class GroupController < InheritedResources::Base

  def create
    super do |success, failure|
      if success
        GroupMembership.create(:user_id => current_user, :group_id => @group.id)
      ...
    end
  end

end
class-GroupController当前用户,:group\u id=>@group.id)
...
结束
结束
结束
class GroupController < InheritedResources::Base

  def create
    super do |success, failure|
      if success
        GroupMembership.create(:user_id => current_user, :group_id => @group.id)
      ...
    end
  end

end