Ich habe eine Benutzer-Entität, die ein Feld Aktueller Standort (Stadt und Land) hat. Um diese Informationen zu speichern, habe ich eine Entität namens Location mit has_many Users erstellt.Ruby on Rails: Verschachtelte Attribute, gehört zu
Ich bin nicht ganz sicher, ob ich das Benutzermodell "has_one" oder "gehört_zu" einfügen sollte, aber für was ich lese, wenn ich wollte, dass es den Fremdschlüssel des Ortes hätte, sollte ich "gehört_zu". Ich möchte auch den aktuellen Standort des Benutzers bearbeiten können, wenn ich den Benutzer bearbeite. also verwende ich verschachtelte Attribute. Aber wenn ich den Benutzer bearbeite, beende ich jedes Mal einen neuen Ort, ohne ihn jemals dem bearbeiteten Benutzer zuzuordnen. Kannst du mir helfen?
Mein Code ist folgende:
#User Model
class User < ActiveRecord::Base
## Relationships
belongs_to :current_location, :class_name => 'Location'
accepts_nested_attributes_for :current_location
end
#Location Model
class Location < ActiveRecord::Base
#Relationship
has_many :users
end
# part of the _form_edit.haml
- form_edit.fields_for :current_location do |location_form|
= location_form.label :location, "Current Location"
= location_form.text_field :location
#Application Helper
#nested attributes for user and location
def setup_user(user)
returning(user) do |u|
u.build_current_location if u.current_location.nil?
end
end
#in the user controller (added after edit)
def update
@user = @current_user
if @user.update_attributes(params[:user])
flash[:notice] = "Account updated!"
redirect_to account_url
else
render :action => :edit
end
end
Und in der Steuerung, die die Daten speichert, was haben Sie? –
ich habe: def aktualisieren @user = @current_user wenn @ user.update_attributes (params [: user]) Blitz: "Konto aktualisiert" [Ankündigung] = redirect_to account_url sonst render: action =>: bearbeiten Ende Ende – simaob