我是Rails的新手,正在努力在Rails 4.2.4中设置应用程序。我有一个名为List
的模型,在数据库中看起来如下(PostgresQL):
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不是nil。当我尝试在Rails控制台中更改属性时:
> l = List.last
> l.name = 'TestName'
> l.save!
我没有看到任何错误。执行上述命令并执行l.name
后,我看到TestName
。当我输入l
或List.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
的名称属性需要做什么?如果有帮助,我可以发布任何其他文件内容。
答案 0 :(得分:0)
在尝试了一些其他事情后,看起来我需要做的就是从List.rb中传递给name
的数组中删除attr_accessor
。我相信当我尝试使用my_list.name = 'something'
更改列表名称时,我正在修改实例变量,而不是存储在数据库中的属性。