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类似,首先搜索具有此类名称的内部类,然后已经是外部类。当然,我可以改变一个内部类的名字,但它对项目没有好处,也许有别的办法?