【问题标题】:how do I write that join query with ActiveRecord?如何使用 ActiveRecord 编写连接查询?
【发布时间】:2009-09-07 16:35:00
【问题描述】:

有人知道我将如何使用 AR 编写该查询吗?

select *, (m.user_id=1) as member from band b join memberships m on m.band_id = g.id;

提前致谢。

【问题讨论】:

    标签: sql ruby-on-rails ruby postgresql activerecord


    【解决方案1】:

    这里的假设是你有这样的东西:

    class Band < ActiveRecord::Base
      has_many :memberships
      has_many :users, :through => :memberships
    end
    
    class User < ActiveRecord::Base
      has_many :memberships
      has_many :bands, :through => :memberships
    end
    
    class Membership < ActiveRecord::Base
      belongs_to :user
      belongs_to :band
    end
    

    在这种情况下,您可以轻松地执行此查询。

    user = User.find(1)
    user.bands
    

    但是,您的问题非常模糊,因此,如果这不是您要寻找的内容,请考虑用更多细节来扩展您的问题。您还在您的问题中引用了一个从未定义的别名“g”。

    【讨论】:

    • 请仔细阅读我的问题,我当然知道如何通过 has_many。我想要做的是让我的查询返回一个自定义布尔字段“(memberships.user_id=1)作为成员”,你的回答根本没有回答我的问题。
    【解决方案2】:

    我不明白您为什么要通过 SQL 查询设置布尔属性。你可以用好的 ol' Ruby 来做到这一点,正如 jdl 所说,它还可以让你使用很多。

    class Book
      def member?
        user_id == 1
      end
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-09-24
      • 2017-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-06-17
      • 1970-01-01
      相关资源
      最近更新 更多