Ruby 在 Rails & Mongomapper 上:参数数量错误(2 对 1)
Ruby on Rails & Mongomapper : wrong number of arguments (2 for 1)
我是 rails.I 上 ruby 的新手,我正在尝试搜索名称包含 "Jam" 的经纪人,但它给我的错误是 "wrong number of arguments (2 for 1)"。以下是我的代码:
@brokers = Broker.where("firstName = ?", "Jam")
为什么我会收到错误的参数个数错误?
@brokers = Broker.where(firstName: "Jam")
你应该把它放在数组中:
@brokers = Broker.where(["brokers.firstName = ?", "Jam"])
也就是说,我们需要知道您的 rails 版本(和 ruby 版本)。但是,如果您对使用 LIKE
不感兴趣,您可以直接使用
@brokers = Broker.where(firstName: "Jam")
ActiveRecord 内置了一些 sql-builder(如果您愿意,也支持 arel),它允许您编写 Brokers.where(hash_key: value)
并将其转换为 SELECT * FROM brokers WHERE hash_key = value
,这样您就可以更快地编写简单的查询。
您发布的版本无效,因为 where
接受单个字符串、数组或散列图,doesn't accept multiple params。
更新 1(在发现您正在使用 mongomapper 之后):
发现你在使用mongomapper, which is very different from a default Rails installation (be careful if you are new, lot of stuff won't apply to you, Rails by default uses activerecord), I believe you have to add all
at the end of your call, like they do in this question后。所以像:
@brokers = Broker.where(firstName: "Jam").all
另请注意,这种查询方式不适用于 mongomapper:(至少通过检查文档)
@brokers = Broker.where(["brokers.firstName = ?", "Jam"])
所以你被迫使用 where(firstName: "Jam")
更新2(如何执行类似于SQL LIKE的查询):
如果你想让代码以类似于 SQL LIKE
的方式运行,正如你在评论中请求的那样,你可以使用正则表达式,比如:
@brokers = Broker.where(firstName: /.*Jam.*/)
由于您正在使用MongoMapper,您可能需要使用all
。您可以尝试以下查询:
@brokers = Broker.all(firstName: "Jam")
或
@brokers = Broker.where(firstName: "Jam").all
来源:http://mongomapper.com/documentation/plugins/querying.html
更新:
要使用 like
行为,您可以使用正则表达式,例如:
@brokers = Broker.all(firstName: /Jam/)
我是 rails.I 上 ruby 的新手,我正在尝试搜索名称包含 "Jam" 的经纪人,但它给我的错误是 "wrong number of arguments (2 for 1)"。以下是我的代码:
@brokers = Broker.where("firstName = ?", "Jam")
为什么我会收到错误的参数个数错误?
@brokers = Broker.where(firstName: "Jam")
你应该把它放在数组中:
@brokers = Broker.where(["brokers.firstName = ?", "Jam"])
也就是说,我们需要知道您的 rails 版本(和 ruby 版本)。但是,如果您对使用 LIKE
不感兴趣,您可以直接使用
@brokers = Broker.where(firstName: "Jam")
ActiveRecord 内置了一些 sql-builder(如果您愿意,也支持 arel),它允许您编写 Brokers.where(hash_key: value)
并将其转换为 SELECT * FROM brokers WHERE hash_key = value
,这样您就可以更快地编写简单的查询。
您发布的版本无效,因为 where
接受单个字符串、数组或散列图,doesn't accept multiple params。
更新 1(在发现您正在使用 mongomapper 之后):
发现你在使用mongomapper, which is very different from a default Rails installation (be careful if you are new, lot of stuff won't apply to you, Rails by default uses activerecord), I believe you have to add all
at the end of your call, like they do in this question后。所以像:
@brokers = Broker.where(firstName: "Jam").all
另请注意,这种查询方式不适用于 mongomapper:(至少通过检查文档)
@brokers = Broker.where(["brokers.firstName = ?", "Jam"])
所以你被迫使用 where(firstName: "Jam")
更新2(如何执行类似于SQL LIKE的查询):
如果你想让代码以类似于 SQL LIKE
的方式运行,正如你在评论中请求的那样,你可以使用正则表达式,比如:
@brokers = Broker.where(firstName: /.*Jam.*/)
由于您正在使用MongoMapper,您可能需要使用all
。您可以尝试以下查询:
@brokers = Broker.all(firstName: "Jam")
或
@brokers = Broker.where(firstName: "Jam").all
来源:http://mongomapper.com/documentation/plugins/querying.html
更新:
要使用 like
行为,您可以使用正则表达式,例如:
@brokers = Broker.all(firstName: /Jam/)