2017-08-15 20 views
1

我有以下几点:如何将项附加到一个数组

myObject = { 
    id: user.id, 
    email: user.email, 
} 

我需要添加像这样的值:

if current_user && current_user.id == user.id 
    myObject << { 
    notification_email: user.notification_email, 
    notification_email2: user.notification_email2 
    } 
end 

上面的代码会产生错误。

什么是正确的方式来选择追加值的对象?

错误

未定义的方法`< <'为#你是什么意思? <

+0

你的意思是**可选**追加值? – sawa

+0

你会得到什么错误? – sawa

+1

我在代码中的任何地方都看不到数组。 'myObject'是一个[Hash](https://ruby-doc.org/core-2.4.1/Hash.html)。 –

回答

7

也许你想Hash#merge

myObject.merge(
    notification_email: user.notification_email, 
    notification_email2: user.notification_email2 
) 

如果您想要副作用,请使用加粗版本。

myObject.merge!(
    notification_email: user.notification_email, 
    notification_email2: user.notification_email2 
) 
+0

谢谢但是没有添加这些值......它没有效果 – AnApprentice

+0

我添加了该部分。 – sawa

+1

@AnApprentice它不会修改原始对象,但会为添加的新元素生成一个副本。使用bang'!'版本修改原始对象 –

4

myObject哈希,所以要加新的项目,你可以这样做:

if current_user && current_user.id == user.id 
    myObject[:notification_email] = user.notification_email 
    myObject[:notification_email2] = user.notification_email2 
end 
相关问题