2016-02-26 62 views
0

我正在開發一個從Steam API讀取數據的小型Rails 3應用程序。我所看到的是,我創建的任何ActiveRecord模型的模型屬性都不會保存到數據庫,也不會輸出,如果我debug他們。未保存到數據庫的Rails簡單模型屬性

這裏我的樣品模型

class NonPlayableApp < ActiveRecord::Base 
    attr_accessor :name, :steam_id 
    attr_accessible :name, :steam_id 
end 

隨着遷移文件之中:

class CreateNonPlayableApps < ActiveRecord::Migration 
    def change 
    create_table :non_playable_apps do |t| 
     t.string :name 
     t.string :steam_id 
     t.timestamps 
    end 
    end 
end 

下面是與Rails控制檯幾次試驗,我得到相同的結果,當我嘗試他們在一個控制器和inspectyaml模型:

irb(main):001:0> temp = NonPlayableApp.new(steam_id: 33333, name: "Testing") 
=> #<NonPlayableApp id: nil, name: nil, steam_id: nil, created_at: nil, updated_at: nil> 
irb(main):002:0> temp.steam_id 
=> 33333 
irb(main):003:0> temp.name 
=> "Testing" 
irb(main):004:0> temp.save 
    (0.1ms) begin transaction 
    SQL (4.0ms) INSERT INTO "non_playable_apps" ("created_at", "name", "steam_id", "updated_at") VALUES (?, ?, ?, ?) [["created_at", Fri, 26 Feb 2016 19:40:37 UTC +00:00], ["name", nil], ["steam_id", nil], ["updated_at", Fri, 26 Feb 2016 19:40:37 UTC +00:00]] 
    (8.8ms) commit transaction 
=> true 
irb(main):005:0> temp.steam_id 
=> 33333 
irb(main):006:0> temp 
=> #<NonPlayableApp id: 64, name: nil, steam_id: nil, created_at: "2016-02-26 19:40:37", updated_at: "2016-02-26 19:40:37"> 
irb(main):007:0> temp2 = NonPlayableApp.first 
    NonPlayableApp Load (1.6ms) SELECT "non_playable_apps".* FROM "non_playable_apps" LIMIT 1 
=> #<NonPlayableApp id: 64, name: nil, steam_id: nil, created_at: "2016-02-26 19:40:37", updated_at: "2016-02-26 19:40:37"> 
irb(main):008:0> temp2.steam_id 
=> nil 
irb(main):009:0> temp2.name 
=> nil 

我錯過了什麼?

回答

3

attr_accessor :name, :steam_id重寫Rails爲該屬性自動生成的setter和getter方法。

只需從模型中刪除attr_accessor :name, :steam_id行。

+0

This Works,thanks。我猜Rails從表模式中獲取每個模型的屬性列表? – Technoh

+0

沒錯,Rails爲數據庫表中的每個列生成getter和setter方法。 – spickermann

+0

爲什麼現在開發應用程序時使用Rails 3? Rails 5測試版已經發布。 –

相關問題