has_one :通过多态 - 这可能吗?

发布于 2024-12-05 08:14:06 字数 720 浏览 1 评论 0原文

我的应用程序中有模型:

class Comment < ActiveRecord::Base

belongs_to :commentable, :polymorphic => true

类 Project < ActiveRecord::Base

has_many :discussions, :dependent => :destroy
has_many :tickets, :dependent => :destroy

类讨论 < ActiveRecord::Base

has_many :comments, :as => :commentable, :dependent => :destroy

类 Ticket < ActiveRecord::Base

has_many :comments, :as => :commentable, :dependent => :destroy

end

一切正常,但有时通过commentable从comment中获取项目不太方便,即comment.commentable.project。 有没有办法在Comment模型中制作has_one项目?

I have models in my app:

class Comment < ActiveRecord::Base

belongs_to :commentable, :polymorphic => true

end

class Project < ActiveRecord::Base

has_many :discussions, :dependent => :destroy
has_many :tickets, :dependent => :destroy

end

class Discussion < ActiveRecord::Base

has_many :comments, :as => :commentable, :dependent => :destroy

end

class Ticket < ActiveRecord::Base

has_many :comments, :as => :commentable, :dependent => :destroy

end

Everything works fine, but sometimes it's not very convinient to get project from comment through commentable, i.e. comment.commentable.project.
Is there any way to make has_one project in Comment model?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

尸血腥色 2024-12-12 08:14:06

我会将以下方法添加到您的类 Comment 中:

def project
  self.commentable ? self.commentable.project : nil
end

这将为您提供相同的结果,而无需使用 ActivRecord 的所有魔力。

I would add the following method to your class Comment:

def project
  self.commentable ? self.commentable.project : nil
end

This will give you the same result without all the magic of ActivRecord.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文