【发布时间】:2015-05-28 10:26:19
【问题描述】:
我正在使用 Rails 4.1 和我的模型,例如:
Client has_many TicketLists
TicketList has many projects
现在我正在尝试在客户端模型中使用急切加载,例如:
class Client < ActiveRecord::Base
def ticket_lists_with_project_id(project_id)
ticket_lists.includes(:projects).where("projects.id = ?", project_id)
end
end
当我这样做时:
Client.find(2).ticket_lists_with_project_id(1)
Client Load (1.7ms) SELECT "clients".* FROM "clients" WHERE "clients"."is_destroyed" = 'f' AND "clients"."is_closed" = 'f' AND "clients"."id" = $1 LIMIT 1 [["id", 2]]
PG::UndefinedTable: ERROR: missing FROM-clause entry for table "projects"
LINE 1: ...d" = 'f' AND "ticket_lists"."client_id" = $1 AND (projects.i...
^
: SELECT "ticket_lists".* FROM "ticket_lists" WHERE "ticket_lists"."is_destroyed" = 'f' AND "ticket_lists"."client_id" = $1 AND (projects.id = 1)
ActiveRecord::StatementInvalid: PG::UndefinedTable: ERROR: missing FROM-clause entry for table "projects"
LINE 1: ...d" = 'f' AND "ticket_lists"."client_id" = $1 AND (projects.i...
【问题讨论】:
-
试试这个:
ticket_lists.joins(:projects).where("projects.id = ?", project_id) -
@Surya 请将此添加为答案,以便我接受。
标签: ruby-on-rails ruby-on-rails-4 activerecord eager-loading