我有以下数据库架构:
create_table "addresses", :force => true do |t|
t.string "road"
t.string "city"
t.datetime "created_at"
t.datetime "updated_at"
t.integer "client_id"
end
create_table "clients", :force => true do |t|
t.integer "address_id"
t.integer "order_id"
t.string "first_name"
t.string "last_name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "orders", :force => true do |t|
t.integer "order_id"
t.integer "client_id"
t.datetime "created_at"
t.datetime "updated_at"
end
end
和模特:
class Client < ActiveRecord::Base
belongs_to :address
end
class Order < ActiveRecord::Base
belongs_to :client
end
class Address < ActiveRecord::Base
end
此设置的目的是拥有许多客户端的记录,每个客户端都有一个地址。多个客户端可以具有相同的地址。地址表中的client_id用于此目的。
当我访问/ Clients ActiveScaffold视图,然后单击“创建”时,我可以为新客户端输入数据,包括客户端新地址的数据。
但是,当我访问/ Orders视图并单击create时,我可以添加一个新客户端并为他输入数据,但是对于该地址,只有一个选择框,只能用于选择现有地址,没有字段可以为新客户端创建新地址。 如何为新客户端包含地址字段,以便为客户端创建新地址?
提前致谢
答案 0 :(得分:0)
并没有真正推动ActiveScaffold,但你的表上的关联看起来有点奇怪 - 你在关系的两边都有一个外键,即:
地址有 client_id
和
客户有 address_id
我认为只有一方是严格需要的,例如地址上的 client_id 。
可能相关,但你在关系的任何一方都有了belongs_to - 也许一方应该是has_one关系,即:
class Client
has_one :address
end
class Address
belongs_to :client
end
希望有帮助,克里斯。