新的一天,我猜是新的错误。
我有一个“评论”表。如果我打印出@ comments = Comment.all,我会以这种格式从我的数据库中获取数据:
[#<Comment id: 1, commentable_id: nil, commentable_type: nil, user_id: 1, created_at: "2014-01-10 18:11:44", updated_at: "2014-01-10 18:11:44", content: "yolo drake", receiver: nil>, #<Comment id: 2, commentable_id: nil, commentable_type: nil, user_id: 1, created_at: "2014-01-10 18:12:20", updated_at: "2014-01-10 18:12:20", content: "yolo drake", receiver: nil>, #<Comment id: 3, commentable_id: nil, commentable_type: nil, user_id: 1, created_at: "2014-01-10 18:14:07", updated_at: "2014-01-10 18:14:07", content: "schallulaaa udddaa", receiver: "Linda Lamar">, #<Comment id: 4, commentable_id: nil, commentable_type: nil, user_id: 1, created_at: "2014-01-10 18:17:28", updated_at: "2014-01-10 18:17:28", content: "noch ein versuch", receiver: nil>, #<Comment id: 5, commentable_id: nil, commentable_type: nil, user_id: 1, created_at: "2014-01-10 18:18:42", updated_at: "2014-01-10 18:18:42", content: "scdcsvcdf", receiver: nil>, #<Comment id: 6, commentable_id: nil, commentable_type: nil, user_id: 1, created_at: "2014-01-10 18:20:05", updated_at: "2014-01-10 18:20:05", content: "luiscdncdij", receiver: "Miriam Hagen">]
我想得到所有评论,其中“receiver”= aSpecificName AND其中“commentable_type”= offer。
BUT
1)如果我做@ comments.each为了得到每个评论,而不是每个评论数据库对象,它给了我所有评论:
#<Comment:0x007f9ec4cbb488> #<Comment:0x007f9ec4cba9c0> #<Comment:0x007f9ec4cb97a0> #<Comment:0x007f9ec4cc2710> #<Comment:0x007f9ec4cc0d48> #<Comment:0x007f9ec4ccbf90> # (the list goes on same style)
2)如果我做了类似
的事情@offerpm = Comment.where({ receiver: @user["first_name"], commentable_type: "offer" }),
它给了我这个:
#<ActiveRecord::Relation:0x007f9ec4dd3c80>
===&GT;这里发生了什么,如何选择我想要选择的内容?
答案 0 :(得分:1)
试试这个:
Comment.where(receiver: 'aSpecificName', commentable_type: 'Offer')
编辑:
我也看到你几乎回答了你自己的问题! Relation对象是一个类似于数组的对象,您也可以使用each
方法:
Comment.where({ receiver: @user["first_name"], commentable_type: "offer" }).each do |comment|
# do stuff here
end
答案 1 :(得分:1)
您看到的数字是对象。您已经在选择要选择的内容,即正确的对象。现在你只需要调用方法来查看你想要的字段而不是那些数字。
所以在你的例子中使用接收器,
@offerpm.receiver
或@offerpm.commentable_type
查看该字段。
希望有所帮助。