在我的 Ruby on Rails 项目中,我有一个 Message
模型,它的属性 direction
为“传入”或“传出”。 Message
的另一个属性是 body
,它表示消息的实际内容。我正在使用 Rails 5.1.2。
现在,我想选择消息,同时排除正文在数组中的传入消息,比如 ['a','b','c']
。
例如,如果我的数据库中有以下消息:
{direction: 'outgoing', body: 'a'}
{direction: 'outgoing', body: 'b'}
{direction: 'outgoing', body: 'd'}
{direction: 'incoming', body: 'd'}
{direction: 'incoming', body: 'c'}
我只想选择除最后一条消息之外的消息,即 {direction: 'incoming', body: 'c'}
我试过了
Message.where.not(["direction = ? and body != ?","incoming","['a','b','c']"])
这个只返回给我传出的消息,但缺少正文为“d”的传入消息。
有什么建议吗? 谢谢。
最佳答案
根据帖子中提到的描述,您想在数组对象上使用 sql 来拒绝元素。
为此修改查询以接受数组作为参数而不是帖子中提到的字符串。
Message.where.not("direction = ? and body IN (?)","incoming",['a','b','c'])
关于ruby-on-rails - 事件记录检查属性是否在基于另一个属性的数组中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52429740/