比方说,我们有一个Comment
,它是通过belongs_to关联连接到Article
的。注释具有一个名为is_connected
的属性,它是一个布尔值。
我知道有可能在belongs_to关系中添加一个条件。是否可以在实例本身上添加条件?
class Comment
belongs_to :article, -> {where: is_connected: true}
end
像本例中一样-is_connected引用了文章模型。但我希望这种关系仅在comment.is_connected == true
答案 0 :(得分:2)
您可以定义条件验证:
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
答案 1 :(得分:0)
我不确定您为什么要采用这种方法。我的意思是,如果评论中包含article_id,那么您可以放心地说此评论与文章相关联。 is_connected
似乎是重复的。 article_id
存在/不存在的工作方式相同。