我已经尝试了一段时间,但似乎无法在 Activerecord 中正确使用它。
asset_id
给定一个和对的数组asset_type
,查询一个同时具有这两个属性的类,仅当两者都asset_id
匹配asset_type
时。
所以给定数组
[[4,"Logo"],[1,"Image"]]
我想生成 SQL
SELECT "asset_attachments".* FROM "asset_attachments" WHERE ((asset_id,asset_type) IN ((4,'Logo'),(1,'Image')))
我可以通过使用 where 手动输入字符串来做到这一点:
AssetAttachment.where("(asset_id,asset_type) IN ((4,'Logo'),(1,'Image'))")
但我正在尝试将它与任意长度和资产类型/id 的数组一起使用。
到目前为止我已经尝试过
AssetAttachment.where([:asset_id, :asset_type] => [[4,"Logo"],[1,"Image"]])
NoMethodError: undefined method `to_sym' for [:asset_id, :asset_type]:Array
和
AssetAttachment.where("(asset_id,asset_type)" => [[4,"Logo"],[1,"Image"]])
ActiveRecord::StatementInvalid: PG::Error: ERROR: column asset_attachments.(asset_id,asset_type) does not exist
和
AssetAttachment.where("(asset_id,asset_type) IN (?,?)",[[4,"Logo"],[1,"Image"]])
ActiveRecord::PreparedStatementInvalid: wrong number of bind variables (1 for 2) in: (asset_id,asset_type) IN (?,?)
有谁知道如何做到这一点?提前致谢