我有以下模型对象:Issue.owner = [array]
我正在尝试创建一个范围,其中范围在数组中搜索特定的整数,例如:
scope :tagged_in_issue, where("issues.owner.include?(1)", true)
我哪里出错?
答案 0 :(得分:1)
你不能在期望SQL的地方使用Ruby。 where
子句的参数应该可以在SQL中使用,例如文字字符串,带占位符的数组或带有列值对的散列。
您需要做的是将查询重新表述为SQL WHERE
子句。
答案 1 :(得分:1)
您可以添加以下方法:
class Issue < AR::Base
def tagged_in_issue?(n)
owner.include?(n)
end
end
@issue.tagged_in_issue(1)
#=> true
@issue.tagged_in_issue(2)
#=> false
UPD
只要你需要scope
,我的方法就不是你需要的。所以你可以这样做(Ruby方式)
class Issue < AR::Base
def self.tagged_in_issue(n)
all.select{|a| a.owner.include?(n)}
end
end
Issue.tagged_in_issue(1)
#=> Array of issues
如果您想通过SQL来实现,那么您应该描述owner
属性是什么以及它存储在哪里