我有一个活动模型.事件可以有父事件,从模型中的列(父事件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

我的模式:

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

推荐答案

这是一个self 参照模型,你可以try 以下方式:

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.父对象以获取ActiveRecord事件对象和@Event.child_events以获取事件对象的ActiveRecord集合

Ruby-on-rails相关问答推荐

Rails 7通过引擎将方法自动加载到控制器中的方法

使用ActiveSupport::TimeWithZone将UTC转换为用户定义的时区

使用Rails和RSpec,有没有办法查看操作真正将您带到哪个页面?

Django模型在关系更新时更新相关对象

设计 token_authenticable 已弃用,有什么替代方案?

Rails 是否带有未授权异常?

具有条件的列的计数器缓存?

可能在rails中有多态has_one关系?

如何在 Windows 上为 Ruby 安装 sqlite3?

带有 master.key 的 Rails 5.2 - Heroku 部署

在本地 Rails 开发环境中获取真实 IP 地址

嵌套模型和父验证

Django 还是 Ruby-On-Rails?

Rails Devise:设置密码重置令牌并重定向用户

Active Record has_many:通过删除一条关联记录

Sidekiq 在 docker-compose 上的 127.0.0.1:6379 (Errno::ECONNREFUSED) 上连接到 Redis 时出错

停止 Rails 为视图和助手生成规范测试?

# 轨道中的 TODO

Rails - 邮件,将正文作为纯文本获取

将现有的 html.erb 转换为 Haml