acts_as_taggable_on_steroids中的错误 - tags_counts方法

时间:2013-03-20 14:25:51

标签: ruby-on-rails ruby-on-rails-3

tag_count方法为所有记录提供相同的值 在我的GroupsController中,我有:

    @group_blog_tags=@group.blog.blog_posts.tag_counts

其中

     class Group < ActiveRecord::Base
      has_one :blog, :as => :owner, :dependent => :destroy


      class Blog < ActiveRecord::Base
          has_many :blog_posts, :order => "blog_posts.created_at desc", :dependent => 
            :destroy

但无论我选择哪个组,它总是在tags表中获取第一条记录。

我做错了什么?

@group=Group.find(45)  => #<Group id: 45, name: "Royal P&O Princess", description:                        
        "Royal P&O Princess the next edit", created_at: "2013-03-04 06:04:57", 
        primary_photo_id: 807, updated_at: "2013-03-14 07:33:37", tags: "Caribbean, 
        Nile, Mediterranean", group_memberships_count: 2, group_type: 1, 
        last_updated_by: 1, content_updated_at: "2013-03-04 11:05:08", activity_points: 
        0, activity_status: 0, no_memberships_on: nil, owner_id: 28, sponsor_account_id: 
        65, views: 241, company_id: 0, active: 1, de_flag:0  

@group.blog.blog_posts => [#<BlogPost id: 12, created_at: "2013-03-20 05:08:56", 
       updated_at: "2013-03-20 05:08:56", blog_id: 74, creator_id: 1, title: "South 
       African Sojourn", text: "<p>\r\n\tSouth African Sojourn</p>\r\n", comments_count: 
       0, created_at_year_month: 201303, cached_tag_list: "Africa, Veldt", rating_count: 
       0, rating_total: 0, rating_avg: #<BigDecimal:b2de1978,'0.0',4(8)>, views: 1, 
       source: nil, link: nil, guid: nil, tagline: nil, creator_type: "Profile", 
       num_positive_votes: 0, num_negative_votes: 0, net_helpful: 0, best_image: nil, 
      active: 1>, #<BlogPost id: 11, created_at: "2013-03-20 03:46:07", updated_at: 
      "2013-03-20 03:46:07", blog_id: 74, creator_id: 1, title: "African safari", text: 
       "<p>\r\n\tAfrican safari&nbsp;Africa, Safari&nbsp;Afric...", comments_count: 0, 
       created_at_year_month: 201303, cached_tag_list: "Africa, Safari, Veldt", 
       rating_count: 0, rating_total: 0, rating_avg: #<BigDecimal:b2de1518,'0.0',4(8)>, 
       views: 1, source: nil, link: nil, guid: nil, tagline: nil, creator_type: 
       "Profile", num_positive_votes: 0, num_negative_votes: 0, net_helpful: 0, 
       best_image: nil, active: 1>, #<BlogPost id: 2, created_at: "2013-03-04 06:34:53", 
      updated_at: "2013-03-04 06:34:53", blog_id: 74, creator_id: 28, title: "New blog 
       post", text: "<p>\r\n\tNew blog post</p>\r\n", comments_count: 4, 
      created_at_year_month: 201303, cached_tag_list: "New blog post", rating_count: 0, 
       rating_total: 0, rating_avg: #<BigDecimal:b2de1414,'0.0',4(8)>, views: 7, source: 
       nil, link: nil, guid: nil, tagline: nil, creator_type: "Profile", 
       num_positive_votes: 1, num_negative_votes: 0, net_helpful: 1, best_image: nil, 
       active: 1>]  

       @group.blog.blog_posts.tag_counts          => [#<Tag id: 1, name: "acticity 
     stream message">]     


       Trying another group:
       Group.find(40).blog.blog_posts.tag_counts  => [#<Tag id: 1, name: "acticity 
       stream message">] 

它总是取得与结果相同的记录!

1 个答案:

答案 0 :(得分:0)

我认为一个群组“belongs_to”是一个博客,而不是“has_one”。

修改

您必须指定群组和博客之间的关系。可能是这种情况:

  • 一个群组有一个博客,一个博客属于一个群组
  • 一个群组拥有多个博客,一个博客属于一个群组
  • 一个群组属于一个博客,一个博客为has_one群组
  • 一个群组属于一个博客,一个博客有多个群组
  • 一个群组has_one_and_belongs_to_many博客,一个博客has_one_and_belongs_to_many群组

x belongs_to y表示您的y_id表格中有x

x has_one yx has_many y为每个y指定x的数量。

x has_and_belongs_to_many y暗示x有许多yy has_many x