如何动态访问ActiveRecord实例属性?

时间:2012-01-20 15:16:29

标签: ruby-on-rails ruby ruby-on-rails-3.1

基本上我正在使用来自数据库的数据来查找替换一组文本,但替换标记由用户生成,可以是任何大量选择。

当字段名称在变量

中时,如何访问模型记录

正常访问

var = model.field_name

但在我的代码中,我想做类似的事情

replacement_tags.each do |tag|
  content = content.gsub(/tag/, model.|access attribute with same name as tag|
end

所以如果标签是firstname,则lastname将连续运行model.firstname和model.lastname的gsub。

我不介意我是否以错误的方式解决这个问题,只要有一些方法可以实现这些结果

1 个答案:

答案 0 :(得分:3)

当您在Ruby中调用实例方法时,您没有调用任何内容,而是向接收方发送消息

user.first_name可以读作“向此user对象发送消息,要求其返回其名字”

配备了这些知识和this documentation,您可以轻松编写代码

replacement_tags.each do |tag|
  content = content.gsub(/tag/, model.send(tag.to_sym))
end