我目前遇到Ruby on Rails(4.2.5)和Postgres(9.4.5)阵列的问题。 model属性认为它是一个类型String,在尝试分配数组时不起作用。我的迁移有:
# create a urls array
t.text :urls, array: true, default: []
然后在我的控制器中我有:
def create
@lead = Lead.new(lead_params)
...
end
def lead_params
params.require(:lead).permit(:name, :base_url, urls: [])
end
不幸的是,在使用byebug
进行调试时,我看到了:
(byebug) lead_params['urls'].class
Array
(byebug) @lead.urls.class
String
(byebug) @lead.urls
"[\"asd\", \"\", \"\", \"\", \"\"]"
我的Lead类的:urls
属性并不认为它是一个数组。我的模型中没有代码(这可能是问题?)。
任何想法都非常感激!
答案 0 :(得分:0)
您可能希望将类型从text
更改为string
t.string :urls, array: true, default: []
答案 1 :(得分:0)
感谢@muistooshort的评论,我发现数据库架构确实是错误的。在我的所有Docker智慧中,我设法使schema.rb
与实际迁移不同步。
现在schema.rb
正确显示:
t.text "urls", default: [], array: true
一切都按预期工作: - )
诀窍是运行以下内容:
rake db:drop
rake db:create
rake db:migrate
我认为我以前运行了一些似乎导致问题的rake db:rest
命令。