【发布时间】:2018-08-23 09:46:42
【问题描述】:
假设我们有一个Comment,它通过belongs_to 关联连接到Article。 Comment 有一个名为 is_connected 的属性,它是一个布尔值。
我知道可以向belongs_to 关系添加条件。是否可以在实例本身上添加条件?
class Comment
belongs_to :article, -> {where: is_connected: true}
end
就像在这个例子中一样 - is_connected 引用文章模型。但我希望这种关系只存在于comment.is_connected == true
【问题讨论】:
-
语法错误,你可以在那个块中使用普通的ActiveRelation方法,所以:
-> { where(is_connected:true) } -
对不起,误读了您的问题,代码示例令人困惑。您可以动态添加条件,因此您可以向 Comment 添加一个名为 self.article 的类方法,如果 comment.isconnected,您可以在其中有条件地建立关系。我将尝试起草一个示例作为答案。
-
我怀疑您是否正确地处理了这个问题。将belongs_to设为可选不是更好,只需检查是否
comment.article.exists?,这样您就不需要在表中管理单独的字段来指示关系是否存在。 -
@bo-oz - 感谢您的回复。我真的必须做出区分。该示例应该只阐明我正在尝试做的事情。
-
根据@Akshay 的疑问,
is_connected是做什么的?
标签: ruby-on-rails ruby-on-rails-4 ruby-on-rails-5 rails-activerecord