我正在尝试使用jsonb数据类型连接两个表列。
User.create(emails: ['foo@bar.com', 'foo2@bar2.com'])
Email.create(to: [{email: 'foo@bar.com', name: 'foo bar'}, {email: 'foo3@bar3.com', name: 'foo bar3'}], from: 'foobar@bar.com')
我试过了:
joins("LEFT JOIN emails ON (users.emails ? emails.from_email OR emails.to->'email') ?| users.emails")
我得到:ActiveRecord :: StatementInvalid:PG :: DatatypeMismatch:ERROR:OR的参数必须是boolean类型,而不是类型jsonb
我也尝试过做一个地方而不是:
email_addresses = User.last.pluck(:emails).flatten
emails = Email.where("(to->'email' ?| :email_addresses OR from ?| :email_addresses)",
email_addresses: email_addresses
)
获取ActiveRecord :: StatementInvalid:PG :: SyntaxError:ERROR:语法错误在"到"或#34;。我假设这是因为列是一个对象数组..不知道如何通过数组部分。