rails model has_many本身

Ale*_*eed 33 activerecord model ruby-on-rails has-many

我有一个活动模型.事件可以具有父事件,从模型中的列(parent_event_id)设置.我需要能够has_many :event在模型上做,所以我可以做,例如,event.child_eventevent.parent_event.但我的谷歌搜索并没有那么好.

我的型号:

class Event < ActiveRecord::Base
    attr_accessible :days_before, :event_name, :event_date, :list_id, :recipient_email, :recipient_name, :parent_event_id, :is_deleted, :user_id

    belongs_to :user
    has_many :event_email
    has_many :event
end
Run Code Online (Sandbox Code Playgroud)

我的架构:

create_table "events", :force => true do |t|
    t.datetime "event_date"
    t.integer  "days_before"
    t.string   "recipient_email"
    t.integer  "list_id"
    t.string   "recipient_name"
    t.datetime "created_at",                         :null => false
    t.datetime "updated_at",                         :null => false
    t.integer  "user_id"
    t.string   "event_name"
    t.integer  "parent_event_id"
    t.boolean  "is_deleted",      :default => false
end
Run Code Online (Sandbox Code Playgroud)

der*_*yau 68

这是一个自引用模型,您可以尝试这样的事情:

class Event < ActiveRecord::Base
  belongs_to :parent, :class_name => "Event", :foreign_key => "parent_event_id"
  has_many :child_events, :class_name => "Event", :foreign_key => "child_event_id"
end
Run Code Online (Sandbox Code Playgroud)

这样,您可以调用@ event.parent来获取ActiveRecord Event对象,并调用@ event.child_events来获取Event对象的ActiveRecord集合