2015-12-23 122 views
0

有谁知道在使用符号更新模型时,如何/如何引用ActiveRecord模型的属性?我有下面的代码,它更新我的SocialMediaPost模型,其中call[:model_attribute]是等于:facebook_like_count的符号。ActiveRecord从符号引用模型属性

我想要做这样的事情:

SocialMediaPost.find(id).update_columns(call[:model_attribute]: resp.size) 

在功能上是相同的:

SocialMediaPost.find(id).update_columns(facebook_like_count: resp.size) 

注:我需要使用update_columns为这个特殊的任务来绕过我的所有before_saveafter_saveafter_commit回调。

回答

1

请试试这个:

SocialMediaPost.find(id).update_columns(call[:model_attribute].to_sym => resp.size) 
+0

就像一个魅力! – ACIDSTEALTH

1

您可以使用#to_sym

call[:model_attribute].to_sym 
2

注意

{ name: value } 

是一个特殊的快捷符号,你可以使用的地图,其中键是符号。如果你使用别的比一个符号,你必须使用的“散列火箭”符号,例如它等同于下面的符号

{ :name => value } 

"name" => value 

所以你的情况,你可以使用

SocialMediaPost.find(id).update_columns(call[:model_attribute] => resp.size) 
+0

谢谢!这是完美的。尽管自从他第一次,我就标出了杨的回答。 – ACIDSTEALTH

相关问题