尝试使用send设置用户模型值时出现错误。正确的方法是什么?
SyntaxError((irb):22:语法错误,意外的'=',期望 输入结束)
User.first.send(:first_name)="John"
答案 0 :(得分:3)
要动态推断方法名称并调用它,但又不想出现封装问题时,请使用public_send
。
user = User.first
user.public_send(:first_name=, 'Ray')
也许send
也可以在上述代码中使用,但在大多数情况下不建议使用。
User.first.public_send(:first_name=, 'Ray')
将无用,因为您正在为User
对象分配值,并且此setter方法不会保存值。
您的对象没有存储在任何引用中,因此您将丢失对setter
执行了first_name
操作的对象。
将其放入类似 user 的变量中,然后进行此类操作,以便进行跟踪,因此以后可以保存 user 对象,还可以查看所做的更改对于该变量
答案 1 :(得分:0)
想出了一种简单得多的方法。
User.first [:first_name] =“约翰”