【问题标题】:Ruby or Rails method to limit query results by columnRuby 或 Rails 方法按列限制查询结果
【发布时间】:2015-01-02 13:04:02
【问题描述】:

在我的 rails 应用程序中,我有一个包含 4 列的 Hashtag 表:

  • 身份证
  • post_id(标签关联的帖子的id)
  • 标签(实际标签的字符串)
  • tagging_user_id(创建主题标签的用户)

在我的 index 方法中,我想返回给定用户创建的所有 Hashtags:

def index
    @hashtags = Hashtag.where("tagging_user_id = ?", params[:tagging_user_id]).reverse_order
end

正如预期的那样,它为我提供了用户创建的每个主题标签。

然而,我真的很想只让每个主题标签中的一个向用户展示,各个数据库条目并不重要。有没有一种 Rails 方法可以根据“标签”列给我唯一的 Hashtag 条目,所以我不会得到多个相同的标签?

或者,我应该在我的应用程序中而不是我的 API 调用中处理这个抽象吗?

谢谢, JA

【问题讨论】:

  • 只是不要创建重复项。当用户尝试创建新标签时使用方法 find_or_create。如果已经有类似title的tag,rails不会创建,而是从db中选择。
  • @PavelTkackenko 您的评论与问题无关..

标签: ruby ruby-on-rails-4 hashtag


【解决方案1】:

我猜你的意思是像 pluck 这样的东西:

Hashtag.where(tagging_user_id: params[:tagging_user_id]).
        reverse_order.
        pluck('DISTINCT tag')

阅读:http://api.rubyonrails.org/classes/ActiveRecord/Calculations.html#method-i-pluck

【讨论】:

  • 我不认为有人问过这个问题.. :-) 他想要唯一的标签条目.. 不是唯一的标签..
  • 他这样描述该表:tag(实际标签的字符串) @ja。你能解释一下吗?
  • 我想要一个用户以前使用过的标签列表,所以不管他们使用了多少次。如果 'tag' 的值相同,我不想要多行数据库
  • @ja :好吧,我想我的回答应该适合你。不是吗?
猜你喜欢
  • 2020-10-07
  • 2016-02-01
  • 2021-06-26
  • 2011-09-28
  • 1970-01-01
  • 2021-08-21
  • 1970-01-01
  • 1970-01-01
  • 2014-08-04
相关资源
最近更新 更多