无法从控制台或控制器设置Rails模型属性

时间:2015-11-07 19:39:31

标签: ruby-on-rails ruby postgresql

我是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。当我输入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的名称属性需要做什么?如果有帮助,我可以发布任何其他文件内容。

1 个答案:

答案 0 :(得分:0)

在尝试了一些其他事情后,看起来我需要做的就是从List.rb中传递给name的数组中删除attr_accessor。我相信当我尝试使用my_list.name = 'something'更改列表名称时,我正在修改实例变量,而不是存储在数据库中的属性。