Guys У меня 3 таблицы следующим образом:Добавить запись во многих таблицах на основе ID первой таблицы
- Project {идентификатор, имя, владелец, ....}
- ProjectMilestones {идентификатор, project_id, имя ....}
- UserProjects {идентификатор, project_id, ....}
Здесь Когда я создаю новый проект, я схожу с pROJECT_ID(@@ IDENTITY) и Создать новую строку как в ProjectMilestones и UserProjects таблицы с этим ID. Мой код выглядит следующим образом:
def create
ActiveRecord::Base.transaction do
# Instantiate a new object using form parameters
@project = Project.new(params[:project])
if @project.save
# if project saves, Create a new insteance into User Projects
@userproject=UserProject.new(
:project_id=>@project.id
)
@userproject.save
# Create a new insteance into ProjectMilestone
@projectmilestone=ProjectMilestone.new(
:project_id=>@project.id,
:milestone_id=>12,
:milestone_date=>@project.created_at
)
@projectmilestone.save
flash[:notice] = "A new project has been created successfully"
redirect_to(:action => 'list')
else
# If save fails, redisplay the form so user can fix problems
render('new')
end
end
end
Это прекрасно работает для меня. Я хочу знать, есть ли для этого оптимизированный подход? поэтому я могу переместить бизнес-логику в модель и позволить проекту создать все связанные записи или сбой