2
我在Rails中實現了單個表繼承。以下是相應的遷移:在Ruby on Rails中繼承:設置基類的類型
class CreateA < ActiveRecord::Migration
def self.up
create_table :a do |t|
t.string :type
end
end
B類從A繼承:
class B < A
end
現在,很容易獲得B類的所有實例:
B.find(:all)
或
A.find_all_by_type("B")
但是我如何找到類的所有實例A(那些不是B型的)?這是不好的組織嗎?
我嘗試這樣做:
A.find_all_by_type("A")
但A類的實例有一個nil
類型。我能做
A.find_all_by_type(nil)
但這不覺得正確,不知何故。特別是,如果我決定從另一個類繼承A,它將停止工作。
在遷移中爲type定義默認值會更合適嗎?類似於:
t.string :type, :default => "A"
我在這裏做錯了什麼嗎?
你會怎麼做?通過手動爲每個新的A實例設置它,還是通過定義默認的類型值? – 2010-06-17 12:53:30
添加示例^^ – 2010-06-17 15:39:29
即使我意識到我可能沒有使用正確的數據模型,但我喜歡這樣。 – 2010-06-19 09:30:47