Ruby on rails 如何基于多个条件定义多个范围?
我有一个Ruby on rails 如何基于多个条件定义多个范围?,ruby-on-rails,Ruby On Rails,我有一个和许多关联,我只希望提取ID为特定值的关联记录,并且只有一个条件为真 例如: class Account has_many :issues has_many :nodes, through: :issues end 因此,基本上,如果帐户是试用帐户,那么issue.nodes只会返回4条记录。我只会在发布时使用不同的方法: 类问题 ... 定义有效节点或可见节点等 如果账户。试用账户? 节点 其他的 节点。限制(4)#或您的静态节点 结束 结束 您可以为关联定义提供某种la
和许多关联,我只希望提取ID为特定值的关联记录,并且只有一个条件为真
例如:
class Account
has_many :issues
has_many :nodes, through: :issues
end
因此,基本上,如果帐户是试用帐户,那么issue.nodes
只会返回4条记录。我只会在发布时使用不同的方法:
类问题
...
定义有效节点或可见节点等
如果账户。试用账户?
节点
其他的
节点。限制(4)#或您的静态节点
结束
结束
您可以为关联定义提供某种lambda。
大概是这样的:
有许多节点,->(问题)do
其中(账户id:[1,2,3,5]),如果是issue.account.trial\u账户
结束
我不确定我是否正确理解了这个问题,但从代码库中我看到该节点属于account AND issue
使用我的示例中的这个代码块将返回属于请求问题和属于id为1、2、3或5的帐户的节点
如果您需要获取任何只属于id为1、2、3或5的account的节点,我认为更好的方法是使用@stwienert解决方案,定义一个返回正确节点的方法。如果self.account.trial\u account
为false,应该怎么办?关联不应该只在这些ID上吗?如果条件为false,它应该包括所有。
class Issue
belongs_to :account
has_many :nodes, dependent: :destroy, # where node.account_id == [1,2,3,5] if self.account.trial_account
end
class Node
belongs_to :account
belongs_to :issue
end