我正在尝试在 has_many 中使用 belongs_to 关系,如下所示。
换句话说:我想要属于 DownloadSchedule 同时受 client_id 约束的唯一报告。
class DownloadSchedule < ActiveRecord::Base
serialize :custom_data
belongs_to :client
has_many :report_column_schedule_links
has_many :reports, -> { uniq where("report_column_schedule_links.client_id = ?", self.client.id) }, :through => :report_column_schedule_links
end
抛出的错误是
Mysql2::Error: Unknown column 'report_column_schedule_links.client_id' in 'where clause': SELECT `reports`.* FROM `reports` WHERE (report_column_schedule_links.client_id = 1)
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'report_column_schedule_links.client_id' in 'where clause': SELECT `reports`.* FROM `reports` WHERE (report_column_schedule_links.client_id = 1)
这是否可以使用 has_many 或者我必须编写自定义连接?我正在使用 Rails 4。
[更新] report_column_schedule_links 的结构如下。
create_table :report_column_schedule_links do |t|
t.integer :report_id
t.integer :report_column_id
t.integer :client_id
t.integer :schedule_id
t.integer :download_schedule_id
t.timestamps
end
你会注意到 MySQL 错误在语句上
SELECT `reports`.* FROM `reports` WHERE (report_column_schedule_links.client_id = 1)
此语句未在 has_many 上执行连接。
谢谢,贾斯汀