[英]NoMethodError (undefined method `first' for nil:NilClass) when trying to post an image with paperclip and aws-sdk gems
[英]NoMethodError - undefined method 'where' for User:Class in aws-sdk for ruby
我是DynamoDB的新手。 我使用aws-sdk作为ORM来处理红宝石,当我尝试执行User.where('name'=>'Joe')
或User.all(:where => {:name => 'Joe'})
。 aws-sdk是否支持此功能,或者是否有其他方法可以实现此功能? 我的模特看起来像
class User < AWS::Record::HashModel
string_attr :name
end
谢谢。
错误日志:
在2014-04-10 09:46:39 -0400 HTML中以12ms.0.1的GET“ / users”身份启动UsersController#index处理HTML,在3毫秒内完成500内部服务器错误
NoMethodError( 'where' for User:Class): app/controllers/users_controller.rb:6:in
未定义方法'where' for User:Class): app/controllers/users_controller.rb:6:in
index'
HashModel似乎不完整,仅在AWS :: Record :: Model(SimpleDB)支持的地方。
我发现的最简单方法是回退到dynamo_db_table对象。
对于任意参数,请使用SCAN:
User.dynamo_db_table.items.where(name: 'Joe').select('id', 'surname').map(&:attributes)
User.dynamo_db_table.items.where(name: 'Joe', birthday: ('2014-04-10'..'2014-04-17')).select(*User.attributes.keys).map(&:attributes)
User.dynamo_db_table.items.where(name: 'Joe', birthday: ('2014-04-10'..'2014-04-17')).select(*User.attributes.keys, limit: 1).map(&:attributes)
对于使用hash_key进行查询,请使用QUERY:
User.dynamo_db_table.items.query(hash_value: 'Joe', select: User.attributes.keys).map(&:attributes)
User.dynamo_db_table.items.query(hash_value: 'Joe', select: User.attributes.keys, limit: 1).map(&:attributes)
User.dynamo_db_table.items.query(hash_value: 'Joe', select: User.attributes.keys, limit: 1, scan_index_forward: false).map(&:attributes)
User.dynamo_db_table.items.query(hash_value: 'Joe', range_value: '2014-04-10'..'2014-04-17', select: [:birthday], limit: 1, scan_index_forward: false).map(&:attributes)
此处的更多信息: http : //docs.aws.amazon.com/AWSRubySDK/latest/AWS/DynamoDB/ItemCollection.html#query-instance_method
根据错误, User
类没有一个在其或其任何祖先where
存在的where
命名的类方法。
而是使用User.all(:where => { :name => 'Joe' })
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.