第一件事
使用:
- 导轨4
- oracle 增强型适配器 rails4 分支
我在现有数据库上映射了多对多关系。我的模型如下所示:
class EventMap < ActiveRecord::Base
self.table_name="TAKE_PART"
self.primary_key="id"
belongs_to :event, foreign_key: "lottery_event_id"
belongs_to :entrant, foreign_key: "address_id"
end
class Event < ActiveRecord::Base
self.table_name="THE_EVENT"
self.primary_key="id"
has_many :event_maps
has_many :entrants, :through => :event_maps
end
class Entrant < ActiveRecord::Base
self.table_name="ADDRESSES"
self.primary_key="id"
self.set_date_columns :date_of_birth
has_many :event_maps
has_many :events, :through => :event_maps
end
当我尝试获取事件的所有地址时:
def show
@entrants = Event.find(params[:id]).entrants
end
我收到这样的 Oracle 错误:
OCIError: ORA-00904: "TAKE_PART"."ENTRANT_ID": SELECT "THE_EVENT".* FROM "THE_EVENT" INNER JOIN "TAKE_PART" ON "THE_EVENT"."ID" = "TAKE_PART"."LOTTERY_EVENT_ID" WHERE "TAKE_PART"."ENTRANT_ID" = :a1
这里的问题似乎是 TAKE_PART 的外键没有正确使用,应该是address_id,而是使用模型名称entrant_id
这是oracle增强中的错误还是我在匹配表时做错了什么?