最近我充满了疑问,但感谢这个很棒的社区,我学到了很多东西。
我之前得到了有关多态关联所需的所有帮助,现在我有一个关于使用多态模型处理表单的问题。例如,我有 Phoneable 和 User,因此当我创建表单来注册用户时,我希望能够为用户分配一些电话号码(即:手机号码、工作号码、家庭号码)。
class User < ActiveRecord::Base
has_many :phones, :as => :phoneable
end
class Phone < ActiveRecord::Base
belongs_to :phoneable, :polymorphic => true
end
class CreateUsers < ActiveRecord::Migration
t.column :name, :string
t.references :phoneable, :polymorphic => true
end
class CreatePhones < ActiveRecord::Migration
t.column :area_code, :integer
t.column :number, :integer
t.column :type, :string
t.references :phoneable, :polymorphic => true
end
现在,当我创建表单时,我感到很困惑。通常我会执行以下操作:
- form_for :user, :html => {:multipart => true} do |form|
%fieldset
%label{:for => "name"} Name:
= form.text_field :name
##now how do I go about adding a phone number?
##typically I'd do this:
##%label{:for => "phone"} Phone:
##= form.text_field :phone
使用多态性,我是否可以采用相同的方式,但使用 fields_for ?
- user_form.fields_for :phone do |phone| %>
%label{for => "area_code"} Area Code:
= phone.text_field :area_code
%label{for => "number"} Number:
= phone.text_field :number
在这种情况下这是正确的方法吗?