Rails加入模型

时间:2013-07-30 16:09:57

标签: ruby-on-rails join models ruby-on-rails-4

我试图在has_many中使用belongs_to关系,如下所示。

单词:我希望在受client_id约束的情况下属于DownloadSchedule的唯一报告。

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上执行连接。

谢谢, 贾斯汀

0 个答案:

没有答案