我有一个课程如下:
class Player < ActiveRecord::Base
attr_accessor :name, :rating, :team_name
end
所以我跑了&#39;捆绑了exec rails console&#39;然后
Player.create(:name => "Ben", :rating => 5, :team_name => "Brown")
然而,这就是我的回忆:
(0.1ms) begin transaction
SQL (7.0ms) INSERT INTO "players" ("created_at", "updated_at") VALUES (?, ?) [["created_at", Sat, 29 Mar 2014 04:24:31 UTC +00:00], ["updated_at", Sat, 29 Mar 2014 04:24:31 UTC +00:00]]
(0.9ms) commit transaction
=> #<Player id: 1, name: nil, rating: nil, team_name: nil, created_at: "2014-03-29 04:24:31", updated_at: "2014-03-29 04:24:31">
为什么创建的对象没有我分配的属性?这让我觉得很奇怪......
关于这个的任何指导?
谢谢, Mariogs
答案 0 :(得分:-1)
Player.create(:name => "Ben", :rating => 5, :team_name => "Brown")
在这里,您可以批量分配属性名称,评级和team_name
因此,您需要告诉Player
模型可以批量分配上述属性。
要允许质量赋值,您必须将这些属性传递给attr_accessible方法。
attr_accessor
用于创建getter和setter方法。
数据库属性的getter和setter方法是动态创建的,您不需要创建它。
所以改变
attr_accessor :name, :rating, :team_name
到
attr_accessible :name, :rating, :team_name