2

我最近使用ActiveRecord. 这是创建表的初始迁移:

class CreatePosts < ActiveRecord::Migration
  def change
    create_table :posts do |t|
      t.string :title
      t.text :content

      t.timestamps
    end
  end
end

我稍后通过此迁移向其中添加了一个字段:

class AddPrivateToPosts < ActiveRecord::Migration
  def change
   add_column :posts, :private, :boolean
  end
end

每当我调用Post.create("Title", "Content", true)orPost.create!("Title", "Content", true)时,我都会收到too many arguments错误消息。有人可以帮我吗?

4

1 回答 1

2

您应该将包含所需属性的哈希传递给Post.create,例如Post.create(title: 'title', content: 'content', private: true)

Ruby 函数调用总是可以以参数散列结尾,并且{ }可以省略散列符号。在这种情况下,散列被传递给 的第一个参数create,即属性散列。或者,您可以显式传递哈希,然后将更多类似哈希的参数传递给第二个options参数,例如

Post.create({title: 'title', ...}, without_protection: true)

API参考herehere

于 2013-10-23T00:10:36.403 回答