まず、お読みいただきありがとうございます。私はRailsに不慣れで、これに何時間もこだわっています。
私の Rails 3.2 アプリには、User、Organization、Membership の 3 つのモデルがあります (最後のモデルは、User と Organization の間の結合モデルです)。
ユーザーが組織を作成すると、作成時にメンバーになる必要があります。そのため、私の Organization モデルには、メンバーシップを構築する before_create コールバックを含めました。問題は、新しい組織が作成されたときにメンバーシップが構築されている間、メンバーシップ オブジェクトの user_id が「nil.」に設定されているため、現在のユーザーがメンバーではないことです。
コールバックで user_id 属性をハードコーディングすると、実際にはメンバーシップが正しく構築(:user_id => "1")
されます。
新しいメンバーシップに現在のユーザー ID を設定する適切な方法は何ですか? 私の協会がそれを処理する必要があるようですが、私は間違っているかもしれません.
これが私のモデルです。読みやすくするために、いくつかの検証行を省略しています。よろしくお願いします。
user.rb
class User < ActiveRecord::Base
has_many :memberships
has_many :organizations, :through => :memberships
end
メンバーシップ.rb
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :organization
end
組織.rb
class Organization < ActiveRecord::Base
has_many :memberships
has_many :users, :through => :memberships
accepts_nested_attributes_for :memberships, :allow_destroy => true
...
before_create :add_membership
protected
def add_membership
self.memberships.build
end
end