2015-11-07 123 views
0

我是Rails的新手,正在研究如何在Rails 4.2.4中設置應用程序。我有一個名爲List看起來像在數據庫以下(PostgreSQL的)模型:無法從控制檯或控制器設置Rails模型屬性

List(id: integer, user_id: integer, name: string, created_at: datetime, updated_at: datetime, friendly_name: string) 

和List.rb:

class List < ActiveRecord::Base 
    attr_accessor :name, :friendly_name 
    belongs_to :user 
    has_many :items 
end 

我想從一個控制器動作修改name屬性:

def save_name 
    ... 
    list_to_edit = List.find(params[:id].to_i) 
    list_to_edit.name = params[:name] 
    list_to_edit.save! 
    ... 
end 

但是這些改變沒有被持續。我已經確認params [:name]和list_to_edit不是零。當我嘗試更改Rails控制檯中的屬性時:

> l = List.last 
> l.name = 'TestName' 
> l.save! 

我沒有看到任何錯誤。執行上述命令並執行l.name後,我確實看到了TestName。當我鍵入lList.last,但我仍然看到

#<List id: 29, user_id: 17, name: nil, created_at: "2015-11-07 18:55:04", updated_at: "2015-11-07 18:55:04", friendly_name: nil> 

什麼我需要做的設置List的name屬性?如果有幫助,我可以發佈任何其他文件內容。

回答

0

在嘗試了幾件事情之後,它看起來像我需要做的就是從傳遞給List.rb中的attr_accessor的數組中刪除name。我相信當我試圖更改列表名稱my_list.name = 'something'我修改實例變量,而不是存儲在數據庫中的屬性。