我是相當新的Rails的,我得到這個代碼工作,但我想我阻止它做它的一些Rails的魔力:的Rails 3:HAS_MANY通過和Me
目標:創建cause
,並讓創建者通過Cause_User_Membership
表中的build
方法和has_many :through
關聯成爲成員。
問題:通過創建一個cause
,然後手動創建成員資格,我已經完成了它的工作。在創建cause
時,是否可以自動創建Cause_User_Membership
關係?
Cause_Controller.rb
def create
@cause = current_user.causes.build(params[:cause].merge :created_by => current_user.id)
respond_to do |format|
if @cause.save
@membership = current_user.cause_user_memberships.build(:cause_id => @cause.id)
@membership.save
format.json { render :json => {current_user: current_user, results: @cause}}
else
format.json { render :json => {Message: "You messed up"}}
end
end
end
User.rb(片斷)
has_many :cause_user_memberships
has_many :causes, :through => :cause_user_memberships
Cause.rb
attr_accessible :title, :location, :description,...
has_many :cause_user_memberships
has_many :users, :through => :cause_user_memberships
Cause_User_Membership.rb(< --probably不是我最好的型號名稱)
# == Schema Information
#
# Table name: cause_user_memberships
#
# id :integer not null, primary key
# user_id :integer not null
# cause_id :integer not null
# created_at :datetime not null
# updated_at :datetime not null
#
class CauseUserMembership < ActiveRecord::Base
attr_accessible :cause_id, :user_id
belongs_to :user #, :class_name => "User", :foreign_key => "user_id"
belongs_to :cause #, :class_name => "Cause", :foreign_key => "cause_id"
end
如果你只是刪除你設置'@ membership'兩行?我認爲應該在關聯上使用'build'時自動創建記錄。 –
它並沒有創造它,這就是我的頭撞牆的感謝:)謝謝你回到我身邊! –
哦,你是對的:https://rails.lighthouseapp.com/projects/8994/tickets/3600-has_many-through-associationbuild-doesnt-create-the-through-models https://rails.lighthouseapp.com/projects/8994/tickets/220-habtm-collection-build-doesn -t-build-join-associations-different-collection-create –