我使用以下子类和架构设置模型Region
和Event
:
class Region < ActiveRecord::Base
has_many: :events
end
class Event < ActiveRecord::Base
belongs_to: :region, foreign_key: :region_id
end
ActiveRecord::Schema.define(version: 1) do
create_table "region", force: :cascade do |t|
t.integer :region_id, index: true
end
create_table "event", force: :cascade do |t|
t.belongs_to :region, index: true
end
end
仅仅基于此,我希望能够做到以下几点,这不会给我任何回报:
region = Region.all.first
events = region.events # returns nil, why?
我一直在寻找一个小时,但我知道的东西只有很多......基本上Region
必须有2个id
和region_id
,我使用region_id
作为外键,我在表event
上创建了外键。然后我在ActiveRecord::Base
子类中设置关联。我错过了什么吗?生成的has_many
关联方法每次都返回nil
。 :(
注意:我可以在region_id
个对象中看到Event
属性。我不确定我还需要对Rails说什么,以便它知道该怎么做。
答案 0 :(得分:0)
您应在:primary_key
模型上指定要关联的Region
列。
class Region < ActiveRecord::Base
has_many :events, primary_key: :region_id
end
class Event < ActiveRecord::Base
belongs_to :region, foreign_key: :region_id, primary_key: :region_id
end