是否可以在 ruby​​ on rails 中对关联进行分组?

Posted

技术标签:

【中文标题】是否可以在 ruby​​ on rails 中对关联进行分组?【英文标题】:Is it possible to group associations in ruby on rails? 【发布时间】:2012-02-15 12:55:37 【问题描述】:

我有一个页面,我在其中为用户显示线程列表,无论线程是由他们启动的,还是他们是启动线程的接收者。

这是我的模型:

  has_many :threads_as_starter, :class_name => 'MessageThread', :foreign_key => 'sender_id'
  has_many :threads_as_recipient, :class_name => 'MessageThread', :foreign_key => 'recipient_id'

我想做的是定义一个方法,我可以将其存储在实例变量中,并在显示 current_user 线程的视图页面上循环。

当我运行时:MessageThread.where('sender_id OR recipient_id = ?', 4)

   1.9.3p0 :045 > MessageThread.where( 'sender_id OR recipient_id = ?', 4 )
  MessageThread Load (0.4ms)  SELECT `message_threads`.* FROM `message_threads` WHERE (sender_id OR recipient_id = 4) ORDER BY message_threads.created_at DESC
 => [#<MessageThread id: 89, message_id: 219, sender_id: 4, recipient_id: 38, status: 0, created_at: "2012-02-15 12:26:17", updated_at: "2012-02-15 12:26:17">, #<MessageThread id: 88, message_id: 218, sender_id: 2, recipient_id: 4, status: 0, created_at: "2012-02-14 13:41:19", updated_at: "2012-02-14 13:41:19">, #<MessageThread id: 87, message_id: 210, sender_id: 1, recipient_id: 2, status: 0, created_at: "2012-02-14 13:31:12", updated_at: "2012-02-14 13:31:12">] 

我很困惑为什么它会显示发件人或收件人 ID 不等于 4 的行。

什么查询会返回 sender_id 为 4 的所有结果以及 recipient_id 为 4 的所有结果?我需要让登录用户查看他们当前所有线程的列表。由他们发起的和不是由他们发起的。

用户 A 和 B 在 message_threads 表中只有 1 个线程,但他们中的任何一个都可以有更多线程,但用户不同,但每个用户只有 1 个。我使用这个 message_thread 表来引用我使用acts_as_tree gem 的messages 表中的对话。

必须有一种方法可以将threads_as_starter 和threads_as_recipient 分组,例如all_threads 然后调用 current_user.all_threads 全部返回。

提前致谢 亲切的问候

【问题讨论】:

【参考方案1】:
where('sender_id OR recipient_id = ?', 4)

应该是

where('sender_id = ? OR recipient_id = ?', 4)

或许

where('sender_id = ? OR recipient_id = ?', 4, 4)

【讨论】:

非常感谢,在哪里('sender_id = ? OR recipient_id = ?', 4, 4) 工作

以上是关于是否可以在 ruby​​ on rails 中对关联进行分组?的主要内容,如果未能解决你的问题,请参考以下文章

是否有 Ruby on Rails 的分析 gem/插件?

使用 ruby​​ on rails 的在线音频流

如何在 ruby​​ on rails 4 中创建高级搜索

如何在 ruby​​ on rails 中结合救援多个异常?

是否有像 Elgg 这样的插件可用于 Ruby on Rails?

通过单击 Ruby on Rails 中的按钮生成表单