访问对象属性Rails 4

时间:2016-08-29 10:02:47

标签: ruby-on-rails ruby

我在Rails 4中这样做:

ruleChange.old_value = (Filetype.new(:name => 'ritesh'))

但是,在访问ruleChange.old_value时,它会返回字符串 作为#Filetype:0x007f87b2dce4c0,而不是对象。结果ruleChange.old_value.name抛出以下异常:

  

未定义的方法`name' for" Filetype:0x007f87b2dce4c0":String

这里有什么问题?

1 个答案:

答案 0 :(得分:0)

如果old_value是数据库中的字符串属性,则无法在其中存储对象。 您可以存储该对象的名称属性(仅在名称唯一时才相关)

更好的做法是使用old_value_id来存储旧对象的ID。

像这样,你可以做current_object.old_value_id = my_old_object.id. 并找到这样的对象:MyOldObject.find(current_object.old_value_id).name

或者您可以定义belongs_to关系以直接查询旧对象:current_object.my_old_object.name

belongs_to :my_old_object, :class_name => 'my_object', :foreign_key => 'my_old_object'