私はRailsにかなり慣れていません。このコードは機能していますが、Railsの魔法の一部を実行できていないと思います:
ゴール: を作成し、テーブル内のメソッドと関連付けcause
を介して作成者をメンバーにします。build
has_many :through
Cause_User_Membership
質問: をcause
作成してからメンバーシップを「手動で」作成することで、機能するようになりました。Cause_User_Membership
の作成時に関係を自動的に作成する方法はありcause
ますか?
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
コーズ.rb
attr_accessible :title, :location, :description,...
has_many :cause_user_memberships
has_many :users, :through => :cause_user_memberships
Cause_User_Membership.rb (<--おそらく私の最高のモデル名ではありません)
# == 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