39

イベントモデルがあります。イベントは、モデル内の列 (parent_event_id) から設定された親イベントを持つことができます。モデルでできる必要があるhas_many :eventので、たとえば、event.child_eventまたはevent.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

私のスキーマ:

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
4

6 に答える 6

4

has_many を次のように変更します。

has_many :parent_events, class_name: 'Event'
has_many :child_events, ->(event) { where parent_event_id: event.id }, class_name: 'Event'

これは、リンクの Rails 4 ドキュメントからのものです: http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

具体的には、「クエリのカスタマイズ」に関するセクションです。これにより、探していることができるはずです。ローカルで試したわけではありませんが、これは私が少し前に行ったサッカー ピッケム アプリを実装するために必要だったことと似ています。

お役に立てれば。

于 2013-09-13T17:35:00.507 に答える
2

ネストされたセット パターンを試す

この場合:Awesome Nested Set

于 2013-09-13T17:25:46.390 に答える