可以使用某種選項創建Rails ActiveRecord屬性嗎?這是我的意思。假設我們有一個名爲Article的模型,它定義了博客文章。其中一個屬性表示,這篇文章是一個包含圖片的帖子,一個包含圖片的帖子或一個純文本的帖子。每個選項都會觸發不同的佈局進行渲染。屬性具有一定數量的預定義選項。Ruby on Rails使用選項創建模型屬性,從
如何在模型中添加這種屬性「帖子類型」?
可以使用某種選項創建Rails ActiveRecord屬性嗎?這是我的意思。假設我們有一個名爲Article的模型,它定義了博客文章。其中一個屬性表示,這篇文章是一個包含圖片的帖子,一個包含圖片的帖子或一個純文本的帖子。每個選項都會觸發不同的佈局進行渲染。屬性具有一定數量的預定義選項。Ruby on Rails使用選項創建模型屬性,從
如何在模型中添加這種屬性「帖子類型」?
您的情況看起來像是need for implementing Polymorphism。你可以這樣做
class Article < ActiveRecord::Base
belongs_to :articleable, polymorphic: true
end
class Post < ActiveRecord::Base
has_many :articles, as: :articleable
end
class PlainText < ActiveRecord::Base
has_many :articles, as: :articleable
end
#Migration
class CreateArticless < ActiveRecord::Migration
def change
create_table :articles do |t|
t.string :name
t.integer :articleable_id
t.string :articleable_type
t.timestamps
end
end
end
所以基本上你將有一個單一的物品表和「articleable_type」將存儲什麼文章的類型是
實現多態對象,@ankitg顧名思義,是如果您希望您的對象在系統的不同部分之間表現不同,那麼該走的路。但是,如果您在視圖中只需要一點自定義內容,則此方法可能適用於您。
您可以add an attribute to your model調用post_type
,然後在視圖中呈現不同的html,具體取決於post_type
。例如:
在你看來
<% if article.post_type == 'image' %>
<!-- some code -->
<% else %>
<!-- some other code -->
感謝答覆,多態性似乎是完美的這種情況。 – vitalym 2014-09-30 10:59:46