【发布时间】:2010-07-05 16:18:22
【问题描述】:
我有 3 个课程:
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 首先搜索具有该名称的内部类,然后已经是外部类。当然可以改一个内部类的名字,但是对项目没有好处,也许有其他方法?
【问题讨论】:
标签: ruby-on-rails activerecord