我遇到了一个奇怪的情况。有人可以给我建议吗? 我正在开发一个带有
的应用程序Ruby1.8.7
Sinatra 1.4.4
Activerecord 3.2.14
Mysql 5.6.19
我几乎完成了开发但是在最后一刻我得到了堆栈。 我在MySQL中有两个表。
CREATE TABLE items(
id INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
type text,
keyword text,
postid INT,
created_at datetime NOT NULL);
CREATE TABLE comments(
id INT PRIMARY KEY AUTO_INCREMENT NOT NULL,
comment text,
yourname INT,
postid INT,
created_at datetime NOT
NULL);
在Sinatra app中,我宣布上课。
class Comment < ActiveRecord::Base end
class Item < ActiveRecord::Base end
出于调试目的,我编写了这段代码并运行。
get "/l" do
# New comment and set initial value.
y={:yourname =>"3",:comment =>"commenttest"}
com = Comment.new(y)
p com.attribute_names()
p com
# New items and set initial value.
kensaku = {:type=>"000"}
k = Item.new(kensaku)
p k.attribute_names()
p k
k.type="555"
p k
end
所以现在我在控制台上找到了非常有趣的东西。 注释类成功为具有初始值的new。 但是Item类成功了,但是没有设置初始值。 我想知道为什么会这样?
#-- Comment class
["postid", "id", "comment", "created_at", "yourname"]
#<Comment id: nil, comment: "commenttest", yourname: 3, postid: nil, created_at: nil>
#-- Item class
["type", "postid", "id", "keyword", "created_at"]
#<Item id: nil, type: nil, keyword: nil, postid: nil, created_at: nil>
#<Item id: nil, type: "555", keyword: nil, postid: nil, created_at: nil>
答案 0 :(得分:0)
列名type
是ActiveRecord中的reserved word:
虽然这些列名是可选的,但它们实际上是保留的 积极记录。 避开保留关键字,除非您想要 额外的功能。 例如,
type
是用于保留的关键字 使用单表继承(STI)指定表。如果你不是 使用STI,尝试类似的关键字,如“上下文”,可能仍然 准确描述您正在建模的数据。