【发布时间】:2012-07-13 18:36:14
【问题描述】:
我有一个模型“标签”,它链接到特定主题的 dbpedia 文章。我想创建一个虚拟属性,它将使用这个 dbpedia URI 来生成一个维基百科 URI。下面是这个类的大致样子:
class Tag < ActiveRecord::Base
# Validation
validates_presence_of :dbpedia_uri, :label
#Virtual Attribute
def wikipedia_uri
"#{dbpedia_uri}".gsub("dbpedia.org/resource", "wikipedia.org/wiki")
end
end
当我进入控制台并尝试检查 Tag.all[1].wikipedia_uri 时,我收到以下错误:
NoMethodError: undefined method `wikipedia_uri' for #<Tag:0xa0c79ac>
此外,我还有第二个模型(地图),它具有可以工作的虚拟属性,但是当我更改它们时,我仍然得到旧值。所以当代码是:
def thumbnail_uri
"#{map_base_uri}/thumbnails/#{identifier}.jpg"
end
Map.all[1].thumbnail_uri 返回类似:“http://WEBSITE/maps/thumbnails/g3201b.ct002662.jpg”
当我将代码更改为:
def thumbnail_uri
"test"
end
我仍然得到输出:“http://WEBSITE/maps/thumbnails/g3201b.ct002662.jpg”
我尝试重新加载我的 Rails 控制台,但它似乎仍然没有更新虚拟属性。关于可能导致此问题的任何想法?
【问题讨论】:
-
你做了什么来重新加载你的控制台?您是否退出并重新启动它?
-
你在那个属性上试过
attr_accessible吗? -
我使用 Ctrl+D 退出控制台,然后再次手动进入 rails 控制台。我也尝试过使用
attr_accessible,但它什么也没做。
标签: ruby-on-rails ruby model attributes virtual