Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 如何使用Rails同时保存两个模型,并通过关联保存多个模型?_Ruby On Rails 3_Has Many Through - Fatal编程技术网

Ruby on rails 3 如何使用Rails同时保存两个模型,并通过关联保存多个模型?

Ruby on rails 3 如何使用Rails同时保存两个模型,并通过关联保存多个模型?,ruby-on-rails-3,has-many-through,Ruby On Rails 3,Has Many Through,在我的Rails3.2站点中,我有用户和社区。当用户创建新社区时,我希望该用户也自动成为该社区的成员。会员制形成了另一种模式。这些关系如下: 用户: 社区: has_many :memberships has_many :users, :through => :memberships 成员: belongs_to :user belongs_to :community 简而言之,我如何在创建社区的同时使用用户id和成员id创建成员身份 更新 控制器操作: def create @c

在我的Rails3.2站点中,我有用户和社区。当用户创建新社区时,我希望该用户也自动成为该社区的成员。会员制形成了另一种模式。这些关系如下:

用户:

社区:

has_many :memberships
has_many :users, :through => :memberships
成员:

belongs_to :user
belongs_to :community
简而言之,我如何在创建社区的同时使用用户id和成员id创建成员身份

更新

控制器操作:

def create
  @community = Community.new(params[:community])

  respond_to do |format|
  if @community.save
    format.html { redirect_to @community, notice: 'Community was successfully created.' }
    format.json { render json: @community, status: :created, location: @community }
    else
    format.html { render action: "new" }
    format.json { render json: @community.errors, status: :unprocessable_entity }
  end
end

结束

如果用户创建了这样一个社区,那么这应该可以工作:

user.communities.create

连接模型的集合可以通过API进行管理。例如,如果您指定

内科医生。患者=患者

将为新关联的对象创建新的联接模型,如果其中一些对象消失,则删除它们的行


工作答案是:

def create
  @community = current_user.communities.create(params[:community])

  respond_to do |format|
    if @community ...

问题是使用build,然后使用@community.save。这并没有保存关联。使用.create自动调用new和save并创建关联

谢谢。你能解释一下控制器里的情况吗当然。。将您的控制器添加到您的问题中。您是否可以通过
当前用户
访问该用户(如果您添加了该身份验证方法)?如果是这样:
@community=current_user.communities.build(params[:community])
您需要某种方法来查找创建社区的用户。是的,我有当前_用户。代码不会创建错误,但也不会创建关联;只是新社区。我需要拯救新的社区和协会。
def create
  @community = current_user.communities.create(params[:community])

  respond_to do |format|
    if @community ...