我知道以前也有人问过类似的问题,但是找不到一个足够接近我需要的问题来学习如何做到这一点。
我有三个模特:婚礼、接待和与会者。
其想法是,用户将能够访问婚礼的活动页面,在那里,它将有一些信息,地址,和一个接待名单。用户将能够选择他们将要参加的招待会,插入他们的姓名和地址,然后作为参加婚礼的人插入数据库。
我最大的麻烦是把我的头绕在一个模型属于另外两个模型的想法上。即既属于婚礼模式又属于出席者模式的接待模式。
我该怎么做呢?
这是我的模式:
create_table "attendees", force: :cascade do |t|
t.string "name", limit: 255
t.string "address", limit: 255
t.integer "people", limit: 4
t.string "receptions", limit: 255
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "events", force: :cascade do |t|
t.string "name", limit: 255
t.string "slug", limit: 255
t.text "description", limit: 65535
t.string "address", limit: 255
t.float "latitude", limit: 24
t.float "longitude", limit: 24
t.datetime "start_time"
t.datetime "end_time"
t.boolean "saved", limit: 1, default: false
t.integer "actable_id", limit: 4
t.string "actable_type", limit: 255
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
create_table "receptions", force: :cascade do |t|
t.string "address", limit: 255
t.float "latitude", limit: 24
t.float "longitude", limit: 24
t.integer "wedding_id", limit: 4
t.datetime "start_time"
t.datetime "end_time"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_index "receptions", ["wedding_id"], name: "fk_rails_40f4f8c049", using: :btree
create_table "weddings", force: :cascade do |t|
t.string "brides_name", limit: 255
t.string "grooms_name", limit: 255
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
end
add_foreign_key "receptions", "weddings"
哦,我还有个活动桌。我使用ActiveRecord::ActsAs创业板使婚礼成为事件。
发布于 2015-05-11 23:32:56
Reception
模型绝对不belong_to
Attendee
模型。
接待员和与会者之间的关系要么是has_many,要么是'has_many通过‘的关系。这是值得一读的全doco有关的问题。
你提到:
其想法是,用户将能够访问婚礼的活动页面,在那里,它将有一些信息,地址,和一个接待名单。用户将能够选择他们将要参加的招待会,插入他们的姓名和地址,然后作为参加婚礼的人插入数据库。
为了澄清我们在正确的页面上,一场婚礼会有多个招待会,这是真的吗?一位客人可以选择他们要参加的多场招待会中的哪一场?所以一位客人可以参加3场婚礼中的2场,参加一场婚礼?那婚礼本身呢?客人可以参加一些招待会,但不能参加相关的婚礼吗?或者,如果他们参加了任何一个招待会,是否会自动假定他们也会参加婚礼?
你如何确定某个特定的人是否被邀请参加婚礼?我可以浏览你的网站,并列出自己作为一个出席的几个招待会,不请自来?
你描述数据模型的方式似乎有些不对劲--至少,你描述的数据结构与我们都习惯的婚礼不匹配。你很可能对此有充分的理由。如果是这样的话,用更多的背景信息来更新你的问题,比如你想要解决的潜在问题,以及你想要模拟的现实情况。它能让人们更容易地帮助你。
更新:这应该有效。
# wedding.rb
has_many :receptions
# reception.rb
belongs_to :wedding
has_many :attendees, through: :reception_attendees
# attendee.rb
belongs_to :wedding
has_many :receptions, through: :reception_attendees
# reception_attendee.rb
belongs_to :reception
belongs_to :attendee
所以你需要与会者和接待员之间的“有很多”的关系。这意味着您将需要一个新的模型和数据库表reception_attendees
,它将是接待员和与会者之间的链接表。
发布于 2015-05-11 23:41:22
我认为这些关系是可行的:
# wedding.rb
has_many :attendees
has_one :reception
# attendee.rb
belongs_to :wedding
belongs_to :reception
# reception.rb
belongs_to :wedding
has_many :attendees
https://stackoverflow.com/questions/30178893
复制相似问题