rails 模型 has_many 本身 [英] rails model has_many of itself
问题描述
我有一个事件模型.事件可以有父事件,从模型中的列 (parent_event_id) 中设置.我需要能够在模型上做 has_many :event
,所以我可以做,例如,event.child_event
或 event.parent_event
>.但是我的谷歌搜索没有那么好.
I have a event model. Events can have parent events, set from a column in the model (parent_event_id). I need to be able to do has_many :event
on the model, so I can just do, for example, event.child_event
or event.parent_event
. But my googling hasn't worked out that well.
我的模型:
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
我的架构:
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
推荐答案
这是一个自引用模型,你可以试试这样的:
This is a self-referential model, you can try something like this:
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
这样就可以调用@event.parent 来获取一个ActiveRecord Event 对象,调用@event.child_events 来获取一个ActiveRecord 的Event 对象集合
That way, you can call @event.parent to get an ActiveRecord Event object and @event.child_events to get an ActiveRecord collection of Event objects
这篇关于rails 模型 has_many 本身的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!