def destroy
@dignity.destroy
end
Lo siento, eso no es código, así es como me siento ahora. Sé que hay un montón de preguntas para principiantes sobre Devise, creo que miré casi todas.¿Por qué mi user_id es nulo?
Tengo una configuración muy simple Diseñar en Rails 3. hice:
rieles generan idear usuario
También estoy ejecutando los rieles plugin de 3 Geokit, (no estoy seguro si eso es relevante, solo sé que tengo este otro modelo) entonces tengo otro modelo llamado Ubicación, y actúa_como_materble.
Antes de publicar el código, el problema básico es que parece que no puedo hacer que user_id aumente automáticamente. Tenía entendido que un poco de magia de Rails debería ocuparse de esto por mí, si agrego una columna llamada user_id a la clase Location. (lo cual hice a través de una migración) y luego simplemente configuró has_many y belongs_to en consecuencia. (vea abajo)
No puedo entender por qué user_id es siempre nulo. ¿Tiene algo que ver con la forma en que funciona el motor Devise? Estoy bastante seguro de haber hecho que este tipo de asociación funcione en el pasado de la misma manera cuando no estaba usando Devise.
user.rb:
class User < ActiveRecord::Base
has_many :locations
# Include default devise modules. Others available are:
# :token_authenticatable, :confirmable, :lockable and :timeoutable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me
end
location.rb:
class Location < ActiveRecord::Base
belongs_to :user
attr_accessible :street_adress, :city, :state, :zip, :item, :user_id
acts_as_mappable :auto_geocode => true
def address
return "#{self.street_adress}, #{self.city}, #{self.state}, #{self.zip}, #{self.item}"
end
end
aquí es la migración que se añadió la columna:
class AddUseridToLocation < ActiveRecord::Migration
def self.up
add_column :locations, :user_id, :integer
end
def self.down
remove_column :locations, :user_id
end
end
Y, por último, aquí está el esquema. rb:
ActiveRecord::Schema.define(:version => 20110213035432) do
create_table "locations", :force => true do |t|
t.string "street_adress"
t.string "city"
t.string "state"
t.string "zip"
t.float "lat"
t.float "lng"
t.datetime "created_at"
t.datetime "updated_at"
t.string "item"
t.integer "user_id"
end
create_table "users", :force => true do |t|
t.string "email", :default => "", :null => false
t.string "encrypted_password", :limit => 128, :default => "", :null => false
t.string "password_salt", :default => "", :null => false
t.string "reset_password_token"
t.string "remember_token"
t.datetime "remember_created_at"
t.integer "sign_in_count", :default => 0
t.datetime "current_sign_in_at"
t.datetime "last_sign_in_at"
t.string "current_sign_in_ip"
t.string "last_sign_in_ip"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "users", ["email"], :name => "index_users_on_email", :unique => true
add_index "users", ["reset_password_token"], :name => "index_users_on_reset_password_token", :unique => true
end
EDITAR: Estoy de acuerdo con una respuesta RTFM, siempre y cuando pueda obtener un pequeño impulso en la dirección correcta. Tengo la sospecha de que necesito decirle a los rieles algo en la acción crear de mis locations_controller.rb? ¡Alguien me da una pequeña pista aquí!
debería simplemente agregar que en mi location.rb, agregué el ': user_id' en' attr_accessible' solo tratando de hacer que funcione, es por eso que está ahí, si te lo estás preguntando ... – Kevin
Publica el código donde creas las ubicaciones –
¿Por qué user_id en el incremento de la tabla de ubicaciones? No lo hará. La id en la tabla de usuario se incrementará. – Zabba