Довольно простая установка. Я хочу убедиться, что мое понимание ORM верное.Простая has_many: через ассоциацию
class User < ActiveRecord::Base
has_many :memberships
has_many :groups, through => memberships
end
class Group < ActiveRecord::Base
has_many :memberships
has_many :users, through => memberships
end
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :group
end
Теперь, когда пользователь создает группу, я хочу, чтобы запись членства в таблице ссылок была заполнена. Он должен быть атомарным (транзакция).
class GroupsController < ApplicationController
def create
@group = current_user.groups.build(params[:group])
if @group.save
flash[:notice] = "Group has been created."
redirect_to @group
else
flash[:alert] = "Group has not been created."
render :action => "new"
end
end
end
Это не работает. Группа будет сохранена, но запись членства не будет создана в таблице ссылок. Однако использование create vs build работает. Так оно и должно работать?
Какой лучший подход здесь?
У вас есть опечатка в строке @ group.save, (если в начале не должно быть @) – bruno077
Да, это была ошибка при вставке. Вопрос все еще остается. –
Вы не можете вставить код своего вида? – bruno077