Model.send(...)= [1,2,3]

时间:2017-07-20 13:38:38

标签: ruby-on-rails

我需要将一些数组附加到我无法直接写入的模型字段中。

例如,我需要在中使用|type| param代码,如下所示:

Employee.find_by(resposible: true).send("#{type}_ids") = [1,2,3]

但是,这不起作用。

2 个答案:

答案 0 :(得分:0)

在通过send调用的方法中包含参数的语法略有不同。试试这个:

Employee.find_by(resposible: true).send("#{type}_ids=", [1,2,3])

答案 1 :(得分:0)

您使用的语法存在问题。这是send的正确语法:

import re
regex = re.compile('th.s')
l = ['this', 'is', 'just', 'a', 'test']
matches = re.findall(regex, string)

因此,将代码更改为以下代码应该可以正常工作

send(symbol [, args...]) 

您需要在逗号后面传递参数

注意:首选public_send超过send,因为Employee.find_by(resposible: true).send("#{type}_ids=", [1,2,3]) 只会调用与public_send不同的公共方法