【发布时间】:2015-09-09 21:20:56
【问题描述】:
我正在开发一个具有“请求”、“服务”和“价格”三个模型的 Rails 应用程序。请求和服务具有 has_many_through 关系,服务和价格具有 has_one-belongs-to 关系,即服务具有一个价格,价格属于服务。
有关系的模型
class Request < ActiveRecord::Base
has_many :request_services
has_many :services, through: :request_services
end
class RequestService < ActiveRecord::Base
belongs_to :service
belongs_to :request
end
class Service < ActiveRecord::Base
has_many :request_services
has_many :requests, through: :request_services
has_one :price
end
class Price < ActiveRecord::Base
belongs_to :service
end
现在用户将创建一个可以包含许多服务的新请求。所以,我想写一个查询来选择用户在他的请求中选择的服务的价格。
到目前为止,我已经编写了这个查询,
1) 在请求中查找服务
Request.find(1).services
2)在此之后我想获得所选服务的价格,所以我写了
Request.find(1).services.prices
但是这个查询抛出错误。
在 Rails 控制台中运行此查询时遇到的错误
谁能帮我写查询以获取所有选定服务的价格
Request Load (0.2ms) SELECT "requests".* FROM "requests" WHERE "requests"."id" = ? LIMIT 1 [["id", 1]]
NoMethodError: Service Load (0.3ms) SELECT "services".* FROM "services" INNER JOIN "request_services" ON "services"."id" = "request_services"."service_id" WHERE "request_services"."request_id" = ? [["request_id", 1]]
undefined method `prices' for #<Service::ActiveRecord_Associations_CollectionProxy:0x007f4ec4c41bb0>
【问题讨论】:
-
请与您分享具有重要关系声明的模型类并提供完整的错误消息。
-
我已经更新了问题,添加了我的模型类和我在 rails 控制台中遇到的错误
标签: ruby-on-rails rails-activerecord