无法访问Rails 4.2关系

时间:2015-03-15 05:39:47

标签: ruby-on-rails ruby activerecord

我使用以下子类和架构设置模型RegionEvent

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个idregion_id,我使用region_id作为外键,我在表event上创建了外键。然后我在ActiveRecord::Base子类中设置关联。我错过了什么吗?生成的has_many关联方法每次都返回nil。 :(

注意:我可以在region_id个对象中看到Event属性。我不确定我还需要对Rails说什么,以便它知道该怎么做。

1 个答案:

答案 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