Вы должны заключить его в массив:
@brokers = Broker.where(["brokers.firstName = ?", "Jam"])
Это, как говорится, мы должны знать свою версию рельсы (и рубин версия). Однако, если вы не заинтересованы в использовании LIKE
, вы можете просто сделать
@brokers = Broker.where(firstName: "Jam")
ActiveRecord имеет некоторые SQL-строитель, построенный в (и поддерживает arel, если вы хотите), который позволяет писать Brokers.where(hash_key: value)
и преобразует его до SELECT * FROM brokers WHERE hash_key = value
, поэтому вы можете писать простые запросы быстрее.
Версия, которую вы опубликовали, не работает, потому что where
принимает одну строку, массив или хэш-карту, doesn't accept multiple params.
Update 1 (после обнаружения вы используете mongomapper):
После того, как обнаружил, что вы используете mongomapper, который очень отличается от установки в Rails по умолчанию (быть осторожным, если вы новичок, много вещей не будет применяться к вам, Rails по умолчанию использует activerecord), я считаю, что вам нужно добавить all
в конце вашего звонка, как в этом question. Так что-то вроде:
@brokers = Broker.where(firstName: "Jam").all
Также обратите внимание, что этот способ выполнения запросов не будет работать с mongomapper: (по крайней мере, проверяя документацию)
@brokers = Broker.where(["brokers.firstName = ?", "Jam"])
Таким образом, вы вынуждены использовать один с where(firstName: "Jam")
Update 2 (как выполнить запрос, похожий на SQL LIKE):
Если вы хотите, чтобы код вести себя подобным образом, как SQL LIKE
, как вы запрашиваете в комментариях, вы можете использовать регулярное выражение, так что-то вроде:
@brokers = Broker.where(firstName: /.*Jam.*/)
'@brokers = Broker.where (firstName:« Jam »)' – RAJ
его ошибка. – Pritika
он должен хэшировать как ключевое значение firstname является ключевым, а значение - вареньем –