Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/go/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 未知属性';电子邮件';在尝试创建时为[有许多关联]_Ruby On Rails_Activerecord_Rspec_Associations - Fatal编程技术网

Ruby on rails 未知属性';电子邮件';在尝试创建时为[有许多关联]

Ruby on rails 未知属性';电子邮件';在尝试创建时为[有许多关联],ruby-on-rails,activerecord,rspec,associations,Ruby On Rails,Activerecord,Rspec,Associations,我有一个模型用户,我已经建立了一个模型,它有许多/属于与帖子的关联,我正试图在rspec中测试我的帖子控制器。但是,当我尝试创建属于某个用户的帖子时,会出现错误:未定义的方法'email='for# 我是这样写的: before(:each) do @user = User.create!({email: "email@gmail.com", password: "password"}) @post = @user.posts.create!({title: "t

我有一个模型
用户
,我已经建立了一个
模型,它有许多
/
属于
帖子的关联
,我正试图在rspec中测试我的帖子控制器。但是,当我尝试创建属于某个用户的帖子时,会出现错误:
未定义的方法'email='for#

我是这样写的:

before(:each) do
        @user = User.create!({email: "email@gmail.com", password: "password"})
        @post = @user.posts.create!({title: "title", content: "content"})
end
我不知道它为什么要为帖子找到
电子邮件
方法,因为根本没有。
当我试图在rails控制台中创建一个新帖子时,我也会遇到这个错误。我可以执行
p=Post.new(…)
,但在保存时会出现错误。(
p.save!

当我尝试创建一篇类似这样的帖子时,我也会遇到错误:

before(:each) do
        @user = User.create!({email: "email@gmail.com", password: "password"})
        @post = @user.posts.create!({title: "title", content: "content"})
end
Post.create({title:“title”,content:“content”,user\u id:1})

有人知道为什么会出现此错误,以及我如何修复它吗?谢谢

--

我的帖子模型如下所示:

class Post < ActiveRecord::Base

  devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable

  belongs_to :user
end
class Post
根据给定的信息,以下是文件的外观:

型号/用户.rb

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable

  has_many :posts
end
class Post < ActiveRecord::Base
  belongs_to :user
end
class用户
型号/post.rb

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable

  has_many :posts
end
class Post < ActiveRecord::Base
  belongs_to :user
end
class Post
用户迁移

class DeviseCreateUsers < ActiveRecord::Migration[5.0]
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.string :name, null: false
      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.inet     :current_sign_in_ip
      t.inet     :last_sign_in_ip

      ## Confirmable
      t.string :confirmation_token
      t.datetime :confirmed_at
      t.datetime :confirmation_sent_at
      t.string :unconfirmed_email

      t.timestamps null: false
    end

    add_index :users, :name
    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
class CreatePosts < ActiveRecord::Migration[5.0]
  def change
    create_table :notes do |t|
      t.string :title, null: false
      t.text :content, null: false
      t.timestamps null: false
    end
  end
end
class DevisionCreateUsers
迁移后

class DeviseCreateUsers < ActiveRecord::Migration[5.0]
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.string :name, null: false
      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.inet     :current_sign_in_ip
      t.inet     :last_sign_in_ip

      ## Confirmable
      t.string :confirmation_token
      t.datetime :confirmed_at
      t.datetime :confirmation_sent_at
      t.string :unconfirmed_email

      t.timestamps null: false
    end

    add_index :users, :name
    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
class CreatePosts < ActiveRecord::Migration[5.0]
  def change
    create_table :notes do |t|
      t.string :title, null: false
      t.text :content, null: false
      t.timestamps null: false
    end
  end
end
class CreatePosts
根据给定的信息,以下是文件的外观:

型号/用户.rb

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable

  has_many :posts
end
class Post < ActiveRecord::Base
  belongs_to :user
end
class用户
型号/post.rb

class User < ActiveRecord::Base
  devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable

  has_many :posts
end
class Post < ActiveRecord::Base
  belongs_to :user
end
class Post
用户迁移

class DeviseCreateUsers < ActiveRecord::Migration[5.0]
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.string :name, null: false
      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.inet     :current_sign_in_ip
      t.inet     :last_sign_in_ip

      ## Confirmable
      t.string :confirmation_token
      t.datetime :confirmed_at
      t.datetime :confirmation_sent_at
      t.string :unconfirmed_email

      t.timestamps null: false
    end

    add_index :users, :name
    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
class CreatePosts < ActiveRecord::Migration[5.0]
  def change
    create_table :notes do |t|
      t.string :title, null: false
      t.text :content, null: false
      t.timestamps null: false
    end
  end
end
class DevisionCreateUsers
迁移后

class DeviseCreateUsers < ActiveRecord::Migration[5.0]
  def change
    create_table :users do |t|
      ## Database authenticatable
      t.string :name, null: false
      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.inet     :current_sign_in_ip
      t.inet     :last_sign_in_ip

      ## Confirmable
      t.string :confirmation_token
      t.datetime :confirmed_at
      t.datetime :confirmation_sent_at
      t.string :unconfirmed_email

      t.timestamps null: false
    end

    add_index :users, :name
    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
class CreatePosts < ActiveRecord::Migration[5.0]
  def change
    create_table :notes do |t|
      t.string :title, null: false
      t.text :content, null: false
      t.timestamps null: false
    end
  end
end
class CreatePosts
模型中的
Post
中的这一行导致了问题<默认情况下,code>design
需要一个电子邮件列,这就是它抱怨它不存在的原因。只需从
Post
模型中删除该行即可

devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable

Post
模型中的这一行导致了问题<默认情况下,code>design
需要一个电子邮件列,这就是它抱怨它不存在的原因。只需从
Post
模型中删除该行即可

devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable

你的
Post
模型是什么样子的?@iceman我在问题中添加了这个。好的,默认情况下designe需要一个电子邮件栏。另外,designe通常位于你的
用户
模型中,而不是
Post
模型中。哇,就是这样,谢谢。我把设计线放在那里,因为我认为这可能是协会的结果。如果你想加上它作为答案,我会把你的标记为正确。非常感谢。你的
Post
模型是什么样子的?@iceman我在问题中添加了这个。好的,默认情况下,designe需要一个电子邮件栏。另外,designe通常在你的
User
模型中,而不是
Post
模型中。哇,就是这样,谢谢