私はレールにかなり慣れていないので、これはばかげた質問かもしれませんが、多くの関係を持つオブジェクトを保存するために私が取っているアプローチが正しいかどうか疑問に思っています。
例:トピック、投稿、ユーザーを含む基本的なフォーラムアプリを考えてみましょう。トピックには、1人のユーザー、1つのフォーラム、および多くの投稿があります。ユーザーがフォームを介してタイトルとメッセージを送信する場合、これはすべてのテーブルにデータを保存するための最も効率的な方法ですか、それとももっと簡単な方法がありますか?
# init new topic object with forum & user relationships
@topic = Topic.new(
:title => params[:topic][:title],
:forum_id => params[:topic][:forum_id],
:user_id => current_user.id
)
if @topic.save
# init new post object with topic & user relationships
@post = Post.new(
:content => params[:post][:content],
:topic_id => @topic.id,
:user_id => current_user.id
)
if @post.save
# update user's post count and last post info
@user = User.find(current_user.id)
@user.update_attributes(
:post_count => @user.post_count + 1,
:last_post_at => Time.now,
:last_post_id => @post.id
)
# update the forum stats and last post info
@forum = Forum.find(@topic.forum_id)
@forum.update_attributes (
:topic_count => @forum.topic_count + 1
:last_post_id => @forum.recent_post.nil? ? 0 : @forum.recent_post.id
)
# redirect user back to the topic
redirect_to topic_path(@topic.id)
end
より良い慣習はありますか、それともそれはほとんどそれですか?