2012-03-02 5 views
1

私が持っているポストモデル:Postモデルの属性を作成または保存するたびにタグで更新しますか?

class Post < ActiveRecord::Base 
    attr_accessible :title, :content, :tag_list 

    has_and_belongs_to_many :tags 
end 

タグモデル:

class Tag < ActiveRecord::Base 
    attr_accessible :name 

    has_and_belongs_to_many :posts 
    end 
end 

あなたは、彼らがお互いにhas_and belongs_to_many関連を持っていると私はまた、関節のテーブルを作成する見ることができるように。

create_table :posts_tags, :id => false do | t | 
    t.integer :post_id, :tag_id 
end 

次のようにします。

投稿のタグが作成または保存されるたびに、タグが属する投稿のtag_list属性がタグで更新されます。

これを行うための提案はありますか?

答えて

1

タグモデルにafter_saveコールバックを追加することをお勧めします。

after_save :update_tag_list_on_posts 

private 
    def update_tag_list_on_posts 
    posts.update_all(:tag_list => desired_tag_list_value) 
    end 
+0

私はtag_listが投稿に役立つものを得られませんでした。それで私は 'desired_tag_list_value'を更新のために置いたのです。これについて詳しく説明できますか? – prasvin

+0

お返事ありがとうございます。 tag_listには、その投稿に属する各タグが格納されます。投稿が保存されると、 – alexchenco

+0

入力フィールドのタグがtag_list – alexchenco

関連する問題