在我的rails 3.2网站中,我有用户和社区。当用户创建新社区时,我希望用户也自动成为该社区的成员。会员资格构成另一种模式。关系如下:
用户:
has_many :memberships
has_many :communities, :through => :memberships
社区:
has_many :memberships
has_many :users, :through => :memberships
成员:
belongs_to :user
belongs_to :community
简而言之,如何在使用user_id和membership_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
端
答案 0 :(得分:1)
如果用户创建这样的社区,这应该有效:
user.communities.create
可以通过API管理连接模型的集合。例如,如果您指定
physician.patients = patients
为新关联的对象创建了新的连接模型,如果有一些被删除,则会删除它们的行。
答案 1 :(得分:0)
工作答案是:
def create
@community = current_user.communities.create(params[:community])
respond_to do |format|
if @community ...
问题是使用build然后@ community.save。这并没有挽救这种关联。使用.create会自动调用new并保存并创建关联。