Rails 祖先 Gem 配偶
Rails Ancestry Gem Spouse
我正在尝试为酒店创建一个简单的客人列表,我想关联 2 位已婚客人。我到处寻找,但没有找到直接的答案。
我刚刚安装了 Ancestry gem,但我只看到如何关联 children 和 parents - 我是不是遗漏了什么?我是不是想多了?
如能以最佳方式提供帮助,我们将不胜感激!
我当前的架构:
ActiveRecord::Schema.define(version: 20160305173232) do
create_table "guests", force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.string "phone"
t.string "email"
t.date "birthday"
t.text "notes"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "ancestry"
end
add_index "guests", ["ancestry"], name: "index_guests_on_ancestry"
end
至于我吗?我会用参数 guest_id 和 guest2_id 创建另一个模型(例如 Marriage)。
例如:
在来宾模型中
before_save :set_merriages_reverse
has_and_belongs_to_many :marriages,
:class_name => 'Merriage',
:join_table => 'merriages',
:foreign_key => 'guest_id',
:association_foreign_key => 'guest2_id'
has_and_belongs_to_many :set_merriages_reverse,
:class_name => 'Merriage',
:join_table => 'merriages',
:foreign_key => 'guest2_id',
:association_foreign_key => 'guest_id'
...
private
def set_merriages_reverse
self.set_merriages_reverse_ids = self.merriage_ids
end
在 Merriage 模型中
belongs_to :guest, :class_name => 'Guest', :foreign_key => 'guest_id'
belongs_to :guest2, :class_name => 'Guest', :foreign_key => 'guest2_id'
像这样。
Ancestry用来表示一个树结构,一个parent-child关系。
一对夫妇是不同的。根据您需要的灵活性,您可以将 partner_id
属性添加到 Guest
并定义 belongs_to
关联。
如果您需要更复杂的东西,您可以按照 Artyom 的描述创建
Marriage
model/table。或者您可以更进一步,创建一个 Relation
模型,该模型可用于指定 Guest
如何相互关联:Relation(from_id, to_id, kind ).其中 kind
将是一个整数(参见 Rails 枚举)或指定关系的字符串(已婚,parent,child,...)。
我正在尝试为酒店创建一个简单的客人列表,我想关联 2 位已婚客人。我到处寻找,但没有找到直接的答案。
我刚刚安装了 Ancestry gem,但我只看到如何关联 children 和 parents - 我是不是遗漏了什么?我是不是想多了?
如能以最佳方式提供帮助,我们将不胜感激!
我当前的架构:
ActiveRecord::Schema.define(version: 20160305173232) do
create_table "guests", force: :cascade do |t|
t.string "first_name"
t.string "last_name"
t.string "phone"
t.string "email"
t.date "birthday"
t.text "notes"
t.datetime "created_at", null: false
t.datetime "updated_at", null: false
t.string "ancestry"
end
add_index "guests", ["ancestry"], name: "index_guests_on_ancestry"
end
至于我吗?我会用参数 guest_id 和 guest2_id 创建另一个模型(例如 Marriage)。 例如: 在来宾模型中
before_save :set_merriages_reverse
has_and_belongs_to_many :marriages,
:class_name => 'Merriage',
:join_table => 'merriages',
:foreign_key => 'guest_id',
:association_foreign_key => 'guest2_id'
has_and_belongs_to_many :set_merriages_reverse,
:class_name => 'Merriage',
:join_table => 'merriages',
:foreign_key => 'guest2_id',
:association_foreign_key => 'guest_id'
...
private
def set_merriages_reverse
self.set_merriages_reverse_ids = self.merriage_ids
end
在 Merriage 模型中
belongs_to :guest, :class_name => 'Guest', :foreign_key => 'guest_id'
belongs_to :guest2, :class_name => 'Guest', :foreign_key => 'guest2_id'
像这样。
Ancestry用来表示一个树结构,一个parent-child关系。
一对夫妇是不同的。根据您需要的灵活性,您可以将 partner_id
属性添加到 Guest
并定义 belongs_to
关联。
如果您需要更复杂的东西,您可以按照 Artyom 的描述创建
Marriage
model/table。或者您可以更进一步,创建一个 Relation
模型,该模型可用于指定 Guest
如何相互关联:Relation(from_id, to_id, kind ).其中 kind
将是一个整数(参见 Rails 枚举)或指定关系的字符串(已婚,parent,child,...)。