【问题标题】:How to perform such join tables in ActiveRecord?如何在 ActiveRecord 中执行这样的连接表?
【发布时间】:2014-04-21 18:03:55
【问题描述】:

我在使用 ActiveRecord 关系模型进行以下连接时需要帮助:

select "access_urls"."id", "controller_urls"."controller", "action_urls"."action" from
"access_urls"
inner join "controller_urls"
on "controller_urls"."id" = "access_urls"."controller_url_id"
inner join "action_urls"
on "action_urls"."id" = "access_urls"."action_url_id"

我有 AccessUrl、ActionUrl 和 ControllerUrl 模型的地方

class AccessUrl < ActiveRecord::Base
  belongs_to :controller_url
  belongs_to :action_url
end

class ActionUrl < ActiveRecord::Base
  has_many :access_urls
  validates :action, presence: true, uniqueness: { message: "já encontra-se em uso." }
end

class ControllerUrl < ActiveRecord::Base
  has_many :access_urls
  validates :controller, presence: true, uniqueness: { message: "já encontra-se em uso." }
end

谁能帮帮我?

【问题讨论】:

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


    【解决方案1】:

    使用joins

    result = AccessUrl.joins(
      :controller_url, :action_url
    ).select(
      'access_urls.id, controller_urls.control, action_urls.action'
    )
    

    这将为您提供一个关系result,其中包含AccessUrl 的对象。您可以循环访问 result 并访问选定的列:

    result.each do |r| 
      # r.id
      # r.control
      # r.action
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-01
      • 1970-01-01
      • 2021-03-10
      • 2018-12-11
      • 2023-03-14
      • 2016-11-12
      • 2019-03-17
      • 2016-08-10
      相关资源
      最近更新 更多