【问题标题】:Group activity items团体活动项目
【发布时间】:2013-07-22 02:41:57
【问题描述】:

我有如下表结构来存储活动项

id, trackable_id, trackable_type, owner_id, owner_type

其中 trackable_id 和 trackable_type 告诉我在哪个对象(实体)上执行操作。例如,如果 id=1 的用户喜欢 id=1 的图片

id, trackable_id, trackable_type, owner_id, owner_type

1,       1,            Picture,      1,        User

同样,其他用户也可以喜欢同一张图片。在我的新闻提要中,我可以轻松地显示用户执行的活动,但是我想实现这样的目标:

John and katy likes Picture.

而不是

John likes Picture
Kay  likes Picture.

我想要走的路是根据 trackable_id 和 trackable_type 进行分组,但它返回一行(分组的预期结果)。我以前没有使用过 group_concat,它对这种情况有帮助吗? 谢谢!

【问题讨论】:

    标签: mysql sql ruby-on-rails


    【解决方案1】:

    是的,它有帮助。

    Refer this

    GROUP_CONCAT(columnName SEPARATOR ' AND ')

    【讨论】:

      【解决方案2】:

      看起来您正在使用polymorfic associations(如果没有 - 那么您应该使用它)。 您的方法将如下所示:

      def liked_by_string
        user_names = users.collect(&:name).to_sentence # => "John, Katty, Mark and Pete"
      
        "#{user_names} like the Picture"      
      end
      

      【讨论】:

        【解决方案3】:

        嘿,你可以像这样使用

        CONCAT(GROUP_CONCAT( user_name SEPARATOR 'AND' ),' LIKES PICTURES')
        

        Demo

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-07-23
          • 2013-05-30
          • 2023-03-21
          • 1970-01-01
          • 2010-10-14
          • 1970-01-01
          • 2019-02-17
          • 2011-10-15
          相关资源
          最近更新 更多