Ruby on rails 在@object.variable的情况下,可以推断变量吗?

Ruby on rails 在@object.variable的情况下,可以推断变量吗?,ruby-on-rails,ruby,Ruby On Rails,Ruby,我有一个如下所示的散列: extras = {'facebook' => '', 'twitter' => ''} 我的用户属性如下所示: class User < ActiveRecord::Base attr_accessible :facebook, :twitter, #... 这可能吗?是的,您可以使用或: 您可以这样做来收集用户的信息: extras.each_key do |key| extras[key] = @user.send(key.to_sy

我有一个如下所示的散列:

extras = {'facebook' => '', 'twitter' => ''}
我的用户属性如下所示:

class User < ActiveRecord::Base
  attr_accessible :facebook, :twitter, #...

这可能吗?

是的,您可以使用或:

您可以这样做来收集用户的信息:

extras.each_key do |key|
  extras[key] = @user.send(key.to_sym)      
end
或者使用,哪个更安全:如果向用户发送未知密钥,它将不会引发NoMethodError:

extras.each_key do |key|
  extras[key] = @user.try(key.to_sym)
end
您还可以使用地图执行此操作:

extras.each_key{ |k| extras[k] = @user.send(k.to_sym) }
我发了一篇关于这个代码的帖子,你可以在这里看到:

是的,您可以使用或:

您可以这样做来收集用户的信息:

extras.each_key do |key|
  extras[key] = @user.send(key.to_sym)      
end
或者使用,哪个更安全:如果向用户发送未知密钥,它将不会引发NoMethodError:

extras.each_key do |key|
  extras[key] = @user.try(key.to_sym)
end
您还可以使用地图执行此操作:

extras.each_key{ |k| extras[k] = @user.send(k.to_sym) }
我发了一篇关于这个代码的帖子,你可以在这里看到:
对象#send
可以接受字符串。不太清楚@MrYoshiji提到的
试试

extras.each_key { |k| extras[k] = @user.send(k) }
注意:要按方法名称读取变量,您需要使用类似于
attr\u accessible:facebook,:twitter
Object\send
的内容创建该方法,该方法可以使用字符串。不太清楚@MrYoshiji提到的
试试

extras.each_key { |k| extras[k] = @user.send(k) }
注意:要按方法名读取变量,您需要使用类似于
attr\u accessible:facebook,:twitter