是否可以通过.send设置属性值?

Ser*_*off 0 ruby ruby-on-rails

我可以这样做吗?

self.send(:twitter_url) = result
Run Code Online (Sandbox Code Playgroud)

它对我来说不是这样的.

self.send(:twitter_url, result) # this doesn't work either
Run Code Online (Sandbox Code Playgroud)

Model.twitter_url 是一个属性(字符串列)

我需要这个来进行重构.


好的,还有一件事:

argument = :twitter_url
self.send(argument=, result)
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

Mar*_*pka 7

你应该使用twitter_url="setter"方法,所以这应该工作:

send(:twitter_url=, result)
Run Code Online (Sandbox Code Playgroud)

关于您的编辑,您至少可以做两件事:

第一种方法:

send("#{argument}=", result)
Run Code Online (Sandbox Code Playgroud)

第二种方法,使用write_attribute:

write_attribute(argument, result)
Run Code Online (Sandbox Code Playgroud)