首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有很多关于名称空间模型的介绍

有很多关于名称空间模型的介绍
EN

Stack Overflow用户
提问于 2015-09-17 16:16:21
回答 1查看 63关注 0票数 2

我有以下几点

代码语言:javascript
复制
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添加到整个过程并不会有帮助。我能让这个起作用吗?还是我只需要重命名我的模型?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-09-17 16:22:16

您需要在Service::Testimonial类中进行更改:

代码语言:javascript
复制
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',这显然不是您的意图。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32635239

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档