みんな私は次のように3つのテーブルを持っています:
- プロジェクト{id、name、owner、....}
- ProjectMilestones {id、project_id、name ....}
- UserProjects {id、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
それは私にとってはうまくいっています。これに利用できる最適化されたアプローチはありますか?したがって、ビジネスロジックをモデルに移動して、プロジェクトに関連するすべてのレコードを作成させるか、失敗させることができます