Ruby on rails 未定义的方法“email';对于#<;用户信息:0xc0ac77c>;
我在rails中遇到了这个问题。。 上面写着# 我对此进行了多次调试,但无法跟踪错误 这是我的示例代码 user\u infos\u controller.erbRuby on rails 未定义的方法“email';对于#<;用户信息:0xc0ac77c>;,ruby-on-rails,ruby,activerecord,Ruby On Rails,Ruby,Activerecord,我在rails中遇到了这个问题。。 上面写着# 我对此进行了多次调试,但无法跟踪错误 这是我的示例代码 user\u infos\u controller.erb class userinfoscocontroller{“fname”=>“das”,“lname”=>“dasa”,“地址”=>“dsasd”,“bday”=>“2015-06-16”} 用户加载(1.2ms)选择“用户”。*从“用户”中选择“用户”。“id”=$1订单由“用户”。“id”ASC限制1[[“id”,3]] (0.2m
class userinfoscocontroller
new.html.erb
已阻止此用户保存
拯救
这是针对用户数据库的
class DeviseCreateUsers < ActiveRecord::Migration
def change
create_table(:users) do |t|
## Database authenticatable
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
## Trackable
t.integer :sign_in_count, default: 0, null: false
t.datetime :current_sign_in_at
t.datetime :last_sign_in_at
t.string :current_sign_in_ip
t.string :last_sign_in_ip
## Confirmable
# t.string :confirmation_token
# t.datetime :confirmed_at
# t.datetime :confirmation_sent_at
# t.string :unconfirmed_email # Only if using reconfirmable
## Lockable
# t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
# t.string :unlock_token # Only if unlock strategy is :email or :both
# t.datetime :locked_at
t.timestamps null: false
end
add_index :users, :email, unique: true
add_index :users, :reset_password_token, unique: true
# add_index :users, :confirmation_token, unique: true
# add_index :users, :unlock_token, unique: true
end
end
classdeveliecCreateUsers
这是用户信息数据库
class CreateUserInfos < ActiveRecord::Migration
def change
create_table :user_infos do |t|
t.string :fname
t.string :lname
t.date :bday
t.string :address
t.timestamps null: false
end
end
end
class AddAttachmentPictureToUserInfos < ActiveRecord::Migration
def self.up
change_table :user_infos do |t|
t.attachment :picture
end
end
def self.down
remove_attachment :user_infos, :picture
end
end
class CreateUserInfos
rails控制台
于2015-06-16 13:44:14+0800开始发布127.0.0.1版的“/user_infos”
由UserInfosController处理#创建为HTML
参数:{“utf8”=>“✓", "真实性令牌“=>”ig6pSrP9EV7ivQ3DRG/XPcwSQmr8oRhX+4YUtuxxqn/71ViwodxX06IMaQrzEQOWvOEjohAB1suFhubz0+cAJw=>,“用户信息”=>{“fname”=>“das”,“lname”=>“dasa”,“地址”=>“dsasd”,“bday”=>“2015-06-16”}
用户加载(1.2ms)选择“用户”。*从“用户”中选择“用户”。“id”=$1订单由“用户”。“id”ASC限制1[[“id”,3]]
(0.2ms)开始
(2.8ms)回滚
在148ms内完成500个内部服务器错误(ActiveRecord:14.0ms)
NoMethodError(未定义的#的“email”方法):
app/controllers/user_infos_controller.rb:19:in'create'
Rendered/home/allanprog/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action\u dispatch/middleware/templates/rescues//u source.erb(20.2ms)
Rendered/home/allanprog/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action\u dispatch/middleware/templates/rescues//u trace.html.erb(11.9ms)
Rendered/home/allanprog/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action\u dispatch/middleware/templates/rescues//u request\u and\u response.html.erb(3.8ms)
rescues/layout中的Rendered/home/allanprog/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action\u dispatch/middleware/templates/rescues/diagnostics.html.erb(108.5ms)
无法使用内容类型multipart/form data呈现控制台允许的内容类型:[#,#,#]
用户模型
class用户
用户信息模型
class UserInfo”}
验证\附件\内容\类型:图片,:内容\类型=>/\Aimage\/.\Z/
结束
我看不出有任何理由得到NoMethodError(未定义的方法“email”for#)
错误,但我看到的一个问题是:
在userinfoscocontroller
的create
方法中,您编写了:
@user_info = UserInfo.create(
user_id: current_user.id,
fname: params[:user_info][:fname],
lname: params[:user_info][:lname],
bday: params[:user_info][:bday],
address: params[:user_info][:address],
picture: params[:user_info][:picture])
但是在
class CreateUserInfos < ActiveRecord::Migration
def change
create_table :user_infos do |t|
t.string :fname
t.string :lname
t.date :bday
t.string :address
t.timestamps null: false
end
end
end
class AddAttachmentPictureToUserInfos < ActiveRecord::Migration
def self.up
change_table :user_infos do |t|
t.attachment :picture
end
end
def self.down
remove_attachment :user_infos, :picture
end
end
Started POST "/user_infos" for 127.0.0.1 at 2015-06-16 13:44:14 +0800
Processing by UserInfosController#create as HTML
Parameters: {"utf8"=>"✓", "authenticity_token"=>"ig6pSrP9EV7ivQ3DRG/XPcwSQmr8oRhX+4YUtuxxqn/71ViwodxX06IMaQrzEQOWvOEjohAB1suFhubz0+cAJw==", "user_info"=>{"fname"=>"das", "lname"=>"dasa", "address"=>"dsasd", "bday"=>"2015-06-16"}}
User Load (1.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = $1 ORDER BY "users"."id" ASC LIMIT 1 [["id", 3]]
(0.2ms) BEGIN
(2.8ms) ROLLBACK
Completed 500 Internal Server Error in 148ms (ActiveRecord: 14.0ms)
NoMethodError (undefined method `email' for #<UserInfo:0xbcaa624>):
app/controllers/user_infos_controller.rb:19:in `create'
Rendered /home/allanprog/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_source.erb (20.2ms)
Rendered /home/allanprog/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_trace.html.erb (11.9ms)
Rendered /home/allanprog/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/_request_and_response.html.erb (3.8ms)
Rendered /home/allanprog/.rvm/gems/ruby-2.2.1/gems/actionpack-4.2.1/lib/action_dispatch/middleware/templates/rescues/diagnostics.html.erb within rescues/layout (108.5ms)
Cannot render console with content type multipart/form-dataAllowed content types: [#<Mime::Type:0xa39d5f0 @synonyms=["application/xhtml+xml"], @symbol=:html, @string="text/html">, #<Mime::Type:0xa39d474 @synonyms=[], @symbol=:text, @string="text/plain">, #<Mime::Type:0xa38b65c @synonyms=[], @symbol=:url_encoded_form, @string="application/x-www-form-urlencoded">]
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
has_many :pins
has_one :user_info
end
class UserInfo < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
belongs_to :user
has_attached_file :picture, styles: { medium: "300x300>" }
validates_attachment_content_type :picture, :content_type => /\Aimage\/.*\Z/
end
@user_info = UserInfo.create(
user_id: current_user.id,
fname: params[:user_info][:fname],
lname: params[:user_info][:lname],
bday: params[:user_info][:bday],
address: params[:user_info][:address],
picture: params[:user_info][:picture])
class AddUserIdToUserInfos < ActiveRecord::Migration
def self.up
change_table :user_infos do |t|
t.references :user, foreign_key: true, index:true
end
end
def self.down
t.remove_references(:user)
end
end
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable