1
我有一個多態模型Comments
,我與幾乎所有其他模型關聯。我有評論索引頁,我使用模型的標題,我稱之爲commentable
。多態關係和接口/抽象類/協議
確保commentable
模型具有名爲:title
的方法或屬性的最佳方法是什麼?
在Objective-C中,我將定義一個協議,並在其他語言中定義一個抽象類或接口。我試圖找出編寫可維護的rails代碼的最佳方法。
我有一個多態模型Comments
,我與幾乎所有其他模型關聯。我有評論索引頁,我使用模型的標題,我稱之爲commentable
。多態關係和接口/抽象類/協議
確保commentable
模型具有名爲:title
的方法或屬性的最佳方法是什麼?
在Objective-C中,我將定義一個協議,並在其他語言中定義一個抽象類或接口。我試圖找出編寫可維護的rails代碼的最佳方法。
我會在評論模型上寫一個方法來爲你做這件事。因此,在comments.rb:
def title
self.commentable.title if self.commentable.respond_to?(:title)
end
在你看來,你可以檢查,如果評論有一個標題和渲染它,否則就跳過渲染:
<% if @commentable.title %>
<h2><%= @commentable.title %></h2>
<% end %>
這不完全是一個協議或接口,但是在Ruby中,你不能輕易地要求對象以某種方式行事。你使用諸如respond_to之類的東西?看看他們是否會這樣做,如果是的話,那麼你的行爲。
似乎是一種合理的方法。 – Cyrus 2012-02-25 04:03:12