Rails以某种方式将AND (1=0)
添加到模型的SQL查询中:
CompanyRelation Load (0.2ms) SELECT `company_relations`.* FROM `company_relations` WHERE `company_relations`.`vendor_id` = 1 AND (1=0)
答案 0 :(得分:1)
你也可以在查询中找到1 = 1或1 = 0(params [:data]) 和数据它是一个空值的哈希。例如,你有params hash live
{ village: { directions: { id: Empty Array }}}
答案 1 :(得分:0)
似乎是CanCan的一个问题:
答案 2 :(得分:0)
这是我发现的第一个问题,其中包括“ rails scope'AND 1 = 0'”。 正如rossmari所提到的,可能存在一个空哈希。您可能无意中将范围应用于生成哈希的条件。这个作用域可能会给您留下一个空的哈希。例如
Assessment.last.children.for_user(user)
将在您可能不期望的for_user范围内应用子范围。在下面的示例中,id的哈希值通过id参数传递。
如果您有类似
scope :for_user, lambda { |user|
where(id: Question.where(assigned_to: user).... #a hash
然后尝试添加无作用域
scope :for_user, lambda { |user|
where(id: Question.unscoped.where(assigned_to: user).... #a hash
编辑:我发现当我认为自己需要不受限制时,很有可能我的查询结构不正确。