代码之家  ›  专栏  ›  技术社区  ›  Bergrebell

实例本身上的Rails条件关联

  •  0
  • Bergrebell  · 技术社区  · 6 年前

    假设我们有一个 Comment 连接到 Article 通过一个属于你的协会。注释有一个名为 is_connected

    我知道有可能给归属关系增加一个条件。是否可以在实例本身上添加条件?

    class Comment
      belongs_to :article, -> {where: is_connected: true}
    end
    

    就像在这个例子中-is connected引用的是文章模型。但我希望只有在 comment.is_connected == true

    2 回复  |  直到 6 年前
        1
  •  2
  •   matthewd    6 年前

    可以定义条件验证:

    belongs_to :article, optional: true
    validates :article, presence: true, if: :is_connected
    

    也可以选择:

    validates :article, absence: true, unless: :is_connected
    

    或者,如果您希望关联仍被填充,但行为方式与否,则需要定义一个自定义方法:

    def connected_article
      is_connected ? article : nil
    end
    
        2
  •  0
  •   Akshay Goyal    6 年前

    我不知道你为什么要这样做。我的意思是,如果评论中有文章id,那么您可以放心地说,此评论与一篇文章相关。 is_connected 好像是复制品。 article_id