gpt4 book ai didi

ruby-on-rails - 没有主键的 Rails 连接

转载 作者:行者123 更新时间:2023-12-05 04:11:15 25 4
gpt4 key购买 nike

我有一个 date_dimensions 表,其中的日期每天都有一个 PK。我还有一个以 month_year 作为唯一日期的报告表。我需要执行一个将 date_dimensions 连接到报告的连接查询。 此关系在应用中的唯一用途是运行此查询。

我将如何建立这种关系?或者我可以只编写一个原始查询来连接这两者吗?

日期_尺寸:

型号:

class DateDimension < ActiveRecord::Base
has_many :reports
end

迁移:

class CreateDateDimensions < ActiveRecord::Migration
def change
create_table :date_dimensions do |t|
t.date :date
t.integer :month
t.string :year_month_name
t.integer :year
end
end
end

报告:

型号:

class Report < ActiveRecord::Base
belongs_to :date_dimension
end

迁移:

class CreateReports < ActiveRecord::Migration
def change
create_table :reports do |t|
t.string :customer_name
t.string :month_year
t.integer :page_views
end
end
end

最佳答案

你可以这样做:

DateDimension.joins('INNER JOIN reports ON date_dimensions.year_month_name = reports.month_year')

尽管您的名字表明它们的年月顺序不同,所以这可能行不通。

不要忘记为这两个连接列添加索引。

更新 1

抱歉,我错过了您没有在其他地方使用它。您可以将关系设置为:

`has_many :reports, primary_key: 'year_month_name', foreign_key: 'month_year'`

那么你应该能够使用标准的 Rails 语法来访问这些表

关于ruby-on-rails - 没有主键的 Rails 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43009100/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com