Ruby on rails RubyonRails数据库零化

Ruby on rails RubyonRails数据库零化,ruby-on-rails,ruby,ruby-on-rails-4,rails-activerecord,null,Ruby On Rails,Ruby,Ruby On Rails 4,Rails Activerecord,Null,所以,我有我的数据库,但每当我调用Model.create:thing=>Hi时,它就会这样做。当我看的时候,我的记录都是零!减去ID和时间戳,它们由活动记录管理。这是我创建它们的方式还是我的模型???我使用的是Rails 4.0.1,它是相应的活动记录版本。那么,这是什么?什么问题会造成这种情况 我的日志:irbmain:003:0> Email.create(:user => User.find(3), :email => "HIDDEN@HIDDEN.HIDDEN", :key

所以,我有我的数据库,但每当我调用Model.create:thing=>Hi时,它就会这样做。当我看的时候,我的记录都是零!减去ID和时间戳,它们由活动记录管理。这是我创建它们的方式还是我的模型???我使用的是Rails 4.0.1,它是相应的活动记录版本。那么,这是什么?什么问题会造成这种情况

我的日志:irbmain:003:0>

Email.create(:user => User.find(3), :email => "HIDDEN@HIDDEN.HIDDEN", :key => Email.gen("gemist", "HIDDEN@HIDDEN.HIDDEN"))
  User Load (0.3ms)  SELECT "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", 3]]
WARNING: Can't mass-assign protected attributes for Email: user, email, key

   (0.1ms)  begin transaction
  SQL (2.9ms)  INSERT INTO "emails" ("created_at", "updated_at") VALUES (?, ?)  [["created_at", Wed, 01 Jan 2014 21:22:24 UTC +00:00], ["updated_at", Wed, 01 Jan 2014 21:22:24 UTC +00:00]]
   (1.0ms)  commit transaction
=> #<Email id: 3, email: nil, User_id: nil, key: nil, confirmed: nil, created_at: "2014-01-01 21:22:24", updated_at: "2014-01-01 21:22:24">
还有我的模型,如果你想知道ZE生成函数。。。。还是别的什么

class Email < ActiveRecord::Base
  belongs_to :User
  def self.gen(user,email)
    # Make conf keys on demand
    # Salting is used for randominzg and uniquisng, in the case we have already
    # sent keys to the same email (We don't want the samekeys more than once!)
    # Comboing to make sure that incase of two users who want to confirm the 
    # same email
    salt = BCrypt::Engine.generate_salt
    combo = user + email 
    return BCrypt::Engine.hash_secret(combo, salt)
  end
end
如果需要,我可以提供迁移或schmea


现在我知道如何编辑了,我需要尊重原作者,但我没有自尊。

你的问题已经包含了答案:

WARNING: Can't mass-assign protected attributes for Email: user, email, key
以及:

在create正在执行的批量分配期间,您不能设置用户、电子邮件和密钥,因此它将忽略这些设置。从插入日志中可以看到,唯一要设置的字段是时间戳字段。因此,数据库中的记录相当空

可以在模型实例上单独设置这些字段,也可以将其标记为可分配质量,方法是将其放入模型中:

attr_accessible :user, :email, :key

不过,你可能很想让他们受到保护。这是一个例子。如果您正在处理表单数据,您可能希望对某些字段保留保护。如果您的创建已使用受信任的数据,则可以使其可访问。

尝试使用Model.create!:thing=>Hi,如果实例未成功创建,则会引发异常。公布这些回报。这可能不会有多大帮助。这些记录显然是基于双子座的说法,即ID和时间戳不是零。你能给我们展示一下你的模型代码和你创建一个模型的例子吗?你也能展示一下你的控制器代码,以及你创建一些东西时web服务器的输出吗?在黑暗中拍摄:您是否将所有参数都列在像params这样的强参数块中。require:thing.permit:attribute1,:attribute2?是的,就是这样。我使用的是控制台,所以我更喜欢那里的一行程序。非常好!OP说他正在使用Rails 4。如果他想使用attr_accessible,需要使用受保护的属性gem-。
attr_accessible :user, :email, :key