Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 为什么这个赋值和每个循环只返回一个属性,而不是我期望的整个对象?_Ruby On Rails_Ruby_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 为什么这个赋值和每个循环只返回一个属性,而不是我期望的整个对象?

Ruby on rails 为什么这个赋值和每个循环只返回一个属性,而不是我期望的整个对象?,ruby-on-rails,ruby,ruby-on-rails-4,Ruby On Rails,Ruby,Ruby On Rails 4,我的节点模型上有一个如下所示的方法: def users_tagged @node = self @tags = @node.user_tag_list @users = @tags.each do |tag| User.find_by email: tag end end 我希望@users对象是用户记录的集合,但它只返回电子邮件地址列表 这就是此节点对象的外观: > n => #<Node id: 6, name: "1

我的节点模型上有一个如下所示的方法:

  def users_tagged
    @node = self
    @tags = @node.user_tag_list
    @users = @tags.each do |tag|
      User.find_by email: tag
    end
  end
我希望@users对象是用户记录的集合,但它只返回电子邮件地址列表

这就是此节点对象的外观:

> n
=> #<Node id: 6, name: "10PP Form Video", family_tree_id: 57, user_id: 57, media_id: 118, media_type: "Video", created_at: "2015-03-09 20:57:19", updated_at: "2015-03-09 20:57:19", circa: nil, is_comment: nil>
> n.user_tags
=> [#<ActsAsTaggableOn::Tag id: 4, name: "gerry@test.com", taggings_count: 1>, #<ActsAsTaggableOn::Tag id: 3, name: "abc@test.com", taggings_count: 1>]
[135] pry(main)> n.user_tag_list
=> ["gerry@test.com", "abc@test.com"]
为什么它不返回整个记录?

那么,您需要使用,而不是:

阅读此-

好吧,您需要使用,而不是:


读这个-

完美。这正是我想要的。谢谢完美的这正是我想要的。谢谢
> n.users_tagged
  ActsAsTaggableOn::Tag Load (0.5ms)  SELECT "tags".* FROM "tags" INNER JOIN "taggings" ON "tags"."id" = "taggings"."tag_id" WHERE "taggings"."taggable_id" = $1 AND "taggings"."taggable_type" = $2 AND (taggings.context = 'user_tags' AND taggings.tagger_id IS NULL)  [["taggable_id", 6], ["taggable_type", "Node"]]
  User Load (0.4ms)  SELECT  "users".* FROM "users"  WHERE "users"."email" = 'gerry@test.com' LIMIT 1
  User Load (0.5ms)  SELECT  "users".* FROM "users"  WHERE "users"."email" = 'abc@test.com' LIMIT 1
=> ["gerry@test.com", "abc@test.com"]
def users_tagged
  @node = self
  @tags = @node.user_tag_list
  @users = @tags.collect do |tag|
    User.find_by email: tag
  end
end