我在这里做错了什么?
我有一个我正在编写的应用程序的模型,称为页面。这些属性是:title pagetype page_url
title 和 pagetype 可以正常设置,但我为 page_url 使用了自定义 getter/setter。这是逻辑/模型:
class Page < ActiveRecord::Base
def page_url=()
temp = self[:title]
pageUrl = temp.gsub(" ", "_").downcase
if self[:pagetype] == "home"
pageUrl = "/"
end
self[:page_url] = pageUrl
end
def page_url
self[:page_url]
end
end
这相当简单 -> page_url 基于标题,所有空格都替换为除非 page_type == "home",然后将其设置为 "/"。作为记录,我不想将 page_url 设为虚拟,因为我需要它可以搜索并保存在数据库中。
所以不幸的是,无论是在 Rails 控制台还是我的应用程序中,这都失败了。这是我在控制台中调用 setter 方法的方式;
page1 = Page.new
page1.pagetype = "home"
page1.title = "this is a test"
page2 = Page.new
pager2.pagetype = "content"
page2.title = "this is another test"
#expected results should be
page1.page_url()
=> "/"
page2.page_url()
但是我不断得到这个:
page1.page_url()
=> nil
我到底做错了什么?