:city:stateと:countryに属するユーザーモデルがあります。
CityモデルはStateに属しています。
そして、州のモデルは国に属しています。
ユーザーがサインアップするときに、場所(都市の州と国)を選択するか、データベースにない場合は場所を追加できる必要があります。問題は、都市と州を追加するときに、それぞれの州または国に関連付けることができるようにすることです。私が今まで持っているのはこれです
私のユーザーモデルでは
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>
このようにして、ユーザーを作成して都市国家と国に関連付けますが、都市国家と国はそれぞれの州と国の親に関連付けられていない状態で変動しています。ユーザーの作成時にこれらのモデルを関連付ける方法はありますか?このアプローチを放棄する必要がありますか?