我有以下几点
class Service < ActiveRecord::Base
has_many :service_testimonials, class_name: 'Service::Testimonial', dependent: :destroy
has_many :testimonials, through: :service_testimonials
end
class Service::Testimonial < ActiveRecord::Base
belongs_to :service
belongs_to :testimonial
end
class Testimonial < ActiveRecord::Base
has_many :service_testimonials, class_name: 'Service::Testimonial', dependent: :destroy
has_many :services, through: :service_testimonials
end但是如果我做了Service.first.testimonials,则sql是SELECT "service_testimonials".* FROM "service_testimonials" INNER JOIN "service_testimonials" "service_testimonials_testimonials_join" ON "service_testimonials"."id" = "service_testimonials_testimonials_join"."testimonial_id" WHERE "service_testimonials_testimonials_join"."service_id" = $1 [["service_id", 1]]。
因此,它返回一个Service::Testimonial的集合,而不是Testimonial,将class_name添加到整个过程并不会有帮助。我能让这个起作用吗?还是我只需要重命名我的模型?
发布于 2015-09-17 16:22:16
您需要在Service::Testimonial类中进行更改:
class Service::Testimonial < ActiveRecord::Base
belongs_to :service, class_name: '::Service'
belongs_to :testimonial, class_name: '::Testimonial'
end这些class_name是必需的,因为Rails 假设在同一个名称空间中寻找一个类。例如,声明belongs_to :service将被解释为belongs_to :service, class_name: 'Service::Service',这显然不是您的意图。
https://stackoverflow.com/questions/32635239
复制相似问题