我正在构建一个电子商务网站,并希望使用有效记录where语句来查找限定为特定供应商和某些货件状态的货件。这就是我现在所拥有的:
Spree::Shipment.where("stock_location_id = ? and "state = ?", spree_current_user.supplier.stock_locations.first.stock_location_id, 'shipped' || 'ready')
我发现这导致只返回“已发送”语句。我希望它能显示已发货和已准备好的货件。到目前为止,我只能让它显示一个或另一个,这取决于我是否在查询中首先放置'已发送'或'准备好'。
我猜我已将OR运算符(||)放在错误的位置,即使没有错误。有人能告诉我在OR语句中放置OR运算符的正确方法吗?
谢谢,
答案 0 :(得分:3)
List<Enemy> enemyList = new Enemy().createList();
Enemy enemy = enemyList.get(randNum.nextInt(enemyList.size()));
CharBuilder cb = new CharBuilder();
cb.createHero();
CharBuilder character = cb.getHero();
int charStrength = character.getStrength();
int charHp = character.getHP();
int enemyHp = enemy.getHP();
int enemyStr =enemy.getStr();
String enemyName = enemy.getName();
答案 1 :(得分:0)
当我更多地写出问题时,我想出了答案。我想分享答案,以防其他人遇到这个问题。这似乎可以解决问题:
Spree::Shipment.where("stock_location_id = ? and (state = ? or state = ?)", spree_current_user.supplier.stock_locations.first.id, 'shipped', 'ready')
我在控制台中对其进行了测试,并返回了 SQL输出 ,其中包含“准备”和“已发货”状态的货件:
Spree::Shipment Load (0.6ms) SELECT "spree_shipments".* FROM "spree_shipments" WHERE (stock_location_id = 8 and (state = 'shipped' or state = 'ready')) LIMIT 15 OFFSET 0
希望这可以帮助别人。另外,如果您注意到这个陈述似乎很奇怪或效率低下,我真的很想知道。
谢谢!