gpt4 book ai didi

ruby-on-rails-4 - 在 Rails 中进行查找时更改多态类型列值

转载 作者:行者123 更新时间:2023-12-05 05:23:02 25 4
gpt4 key购买 nike

我有一个名为评论的表格

class Comments
belongs_to :commentable, polymorphic: true
end

还有一个叫做 Post 的类

class Post
has_many :comments, as: :commentable
end

问题是我最近对 ​​post 表进行了命名空间。现在是:

class Nytimes::Post
has_many :comments, as: :commentable
end

我担心从现在开始,当我执行 Nytimes::Post.first.comments 时,它会在评论数据库中查找具有 commentable_type 的行设置为 Nytimes::Post。有什么方法可以覆盖它以查找具有 Post 的 commentable_type 的评论吗?

我已经处理了写入。我正在使用 commentable_type: "Post" 将所有新评论写入数据库。然而,我担心的是检索。

最佳答案

您可以使用以下方法覆盖多态关联的默认行为:

class Nytimes::Post
# has_many :comments, as: :commentable
has_many :comments, ->(s) { where(comments: { commentable_type: s.class }) }, foreign_key: :commentable_id
end

即使您的子类也有命名空间,即“class Nytimes::Comments”,您也可以像下面这样使用:

has_many :comments, ->(s) { where(comments: { commentable_type: s.class }) }, foreign_key: :commentable_id, class_name: 'Nytimes::Comments'

关于ruby-on-rails-4 - 在 Rails 中进行查找时更改多态类型列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38860880/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com