我有一个Picture类,我想覆盖返回“description”数据库列值取决于某些逻辑。类方法vs数据库字段的Rails优先
这在Rails中有效吗?在返回数据库列值之前,我是否总是可以依赖类来调用类方法?
# database columns for Picture class
# description => String
# parent_id => Integer
class Picture < ActiveRecord::Base
def description
if parent_id.nil?
self.description
else
description = Picture.find(parent_id).description
end
end
end
找不到在哪里可以找到答案的Rails源代码,所以任何帮助,将不胜感激。
谢谢!
编辑
我试图返回一个图片的描述取决于它是否是一个孩子或父母图片(它们可以被嵌套)。这个例子是有点做作......我可以很容易地通过使用方法不相同的名称数据库列避免这种情况...如
def my_description
if parent_id.nil? # return db data since no parent
self.description
else # return parent's description if one exists
description = Picture.find(parent_id).description
end
end
我想我想在这里不必要的复杂
我想返回一个图片的描述取决于它是否是一个孩子或父母的图片(他们可以嵌套)。这个例子是有点人为的......我可以很容易地避免使用与数据库列没有相同名称的方法...例如 def my_description if parent_id.nil? #返回DB数据,因为没有父 self.description如果存在 描述= Picture.find(PARENT_ID).DESCRIPTION 结束 结束 我想我想在这里不必要的复杂 – 2012-07-27 04:58:43
看到 其他#回报父母的描述在原始问题中编辑。试图使用与数据库列相同的名称的方法,但这似乎只是使事情不必要地复杂化 – 2012-07-27 05:04:44
您*可以*使用超级?我认为Rails没有定义属性访问器,如果已经定义了一个叫做相同的方法?只是在我自己的项目中尝试过,看起来你是对的。酷:) – 2012-07-27 05:11:38