1
我有3類:Rails的單表繼承和子類的名稱問題
class User < ActiveRecord::Base
has_many :events, :foreign_key => 'owner_id'
end
class Event < ActiveRecord::Base
belongs_to :owner, :class_name => 'User', :foreign_key => 'owner_id'
end
class Event::User < Event
end
類的事件有「類型」字段,這樣工作,STI。 現在我創建事件:
Event::User.create(:owner => User.first)
=> #<Event::User id: 8, owner_id: 1, title: nil, type: "Event::User", created_at: "2010-07-05 00:07:32", updated_at: "2010-07-05 00:07:32">
,現在我想接收創建事件的所有者,但得到:
Event.last.owner
=> #<Event::User id: 1, owner_id: 1, title: nil, type: "Event::User", created_at: "2010-07-04 23:28:31", updated_at: "2010-07-04 23:28:31">
SQL日誌給了我下面的:
Event::User Load (0.4ms) SELECT * FROM "events" WHERE ("events"."id" = 1) AND (("events"."type" = 'Event::User'))
與rails類似,首先搜索具有此類名稱的內部類,然後已經是外部類。當然,我可以改變一個內部類的名字,但它對項目沒有好處,也許有別的辦法?