我有一个属于 :city :state 和 :country 的用户模型。
城市模型属于一个州。
一个国家模型属于一个国家。
当用户注册时,他们应该能够选择一个位置(城市州和国家/地区),或者如果它不在数据库中,则添加一个。问题是,在添加城市和州时,我希望能够将它们分别与他们的州或国家相关联。到目前为止我所拥有的是这个
在我的用户模型中
belongs_to :state
belongs_to :city
belongs_to :country
def city_name
city.try(:name)
end
def city_name=(name)
self.city = City.find_or_create_by_name(name.titleize) if name.present?
end
def country_name
country.try(:name)
end
def country_name=(name)
self.country = Country.find_or_create_by_name(name.titleize) if name.present?
end
def state_name
state.try(:name)
end
def state_name=(name)
self.state = State.find_or_create_by_name(name.titleize) if name.present?
end
在我的用户/新表单中
<div class="field">
<%= f.label :your_city %><br />
<%= f.text_field :city_name, data: {autocomplete_source: cities_path} %>
<br /> or <%= link_to "add New Location" ,"javascript:toggleDiv('hideme');"%>
</div>
<div id="log"></div>
<div id="hideme">
<div class="field">
<%= f.label :country_name %><br />
<%= f.text_field :country_name %>
</div>
<div class="field">
<%= f.label :state_name %><br />
<%= f.text_field :state_name %>
</div>
</div>
通过这种方式,我创建了一个用户并将其与一个城市州和国家/地区相关联,但城市州和国家/地区是浮动的,与它们各自的州和国家/地区父级没有关联。有没有办法在创建用户时关联这些模型?我应该放弃这种方法吗?