基本的にこのRailscast: http ://railscasts.com/episodes/163-self-referential-associationで説明されているように、has_many:throughを使用して自己参照アソシエーションを設定しました。
一部の「アクティビティ」は「記事」のように機能し、他のアクティビティのセットが関連付けられているため、結合テーブルに名前が付けられます。少し紛らわしいです...わかっています。
私は物事を正しく保存するのに苦労しています。これが私が持っているものです...
activity.rb
class Activity < ActiveRecord::Base
has_many :article_activities
has_many :activities, :through => :article_activities
accepts_nested_attributes_for :activities
end
article_activity.rb
class ArticleActivity < ActiveRecord::Base
attr_accessible :article_id, :activity_id
belongs_to :activity
belongs_to :article, :class_name => "Activity"
end
articles_controller.rb
class ArticlesController < ApplicationController
def new
@activity = Activity.new
@activity.is_article = true
@user_activities = current_user.activities
end
def create
@activity = Activity.new params[:activity]
@activity.is_article = true
@activity.user = current_user
if @activity.save
redirect_to root_path, :notice => "Article created!"
else
render :action => "new"
end
end
new.html.haml
= simple_form_for @activity, :url => articles_path do |f|
/ Other fields omitted for clarity
= f.association :activities, :collection => @user_activities
したがって、フォームを送信する@activity
と、create
アクションで期待され@activity.activities
ます。@activity
ただし、レコード を保存して再ロードすると、@activity.activities
は空になります。
関連付けを保存する方法はありますか?