Ruby on rails 3 如何使用Rails同时保存两个模型,并通过关联保存多个模型?
在我的Rails3.2站点中,我有用户和社区。当用户创建新社区时,我希望该用户也自动成为该社区的成员。会员制形成了另一种模式。这些关系如下: 用户: 社区: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
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 ...