1
我正在使用一些模型,其中很多給定模型的關鍵屬性實際上都存儲在子模型中。Ruby on Rails:用於子模型的attr_accessor
例子:
class WikiArticle
has_many :revisions
has_one :current_revision, :class_name => "Revision", :order => "created_at DESC"
end
class Revision
has_one :wiki_article
end
的修訂類有一噸的數據庫字段,並且WikiArticle具有非常少。但是,我經常需要從WikiArticle的上下文中訪問版本的字段。最重要的情況可能是創建文章。我一直在做的是,有很多的方法,看起來像這樣的,每一個領域:
def description
if @description
@description
elsif current_revision
current_revision.description
else
""
end
end
def description=(string)
@description = string
end
,然後我保存,我保存@description到一個新的版本。
這整件事讓我想起了很多attr_accessor,只是它看起來並不像我可以讓attr_accessor做我所需要的。我怎樣才能定義一個attr_submodel_accessor,這樣我就可以給出字段名稱並讓它自動按照attr_accessor的方式創建所有這些方法?
感謝這個,我沒有聽說過之前的委託方法。對於讀取此內容的其他人,請注意,委託需要您單獨委派字段的'='方法。不幸的是,委託方法並不是非常通用,足以做我在我的例子中做的事情,其中父模型臨時保存子模型的字段,然後在保存上創建它們。順便提一句,子模型的標準術語是什麼? – 2010-04-09 20:59:14