我目前得到的是一个textarea,它接受逗号分隔的单词串,我想在数据库中序列化为数组。
我有一个序列化数组的模型
class Ipsum < ActiveRecord::Base
serialize :words, Array
validates :title, presence: true, uniqueness: true
end
目前在我的控制器中,我从文本区域获取用户输入,并将类型从字符串转换为数组,执行以下操作。
class IpsumsController < ApplicationController
def create
params[:ipsum][:words] = params[:ipsum][:words].split(',')
@ipsum = Ipsum.new(ipsum_params)
if @ipsum.save
redirect_to @ipsum
end
end
private
def ipsum_params
params.require(:ipsum).permit(:title, :author, :words)
end
end
这可以按预期工作,但我想知道是否有更好的方法来做到这一点,即某种before_serialization回调,或某种形式的序列化。
这里也是目前的形式,我使用ruby-slim。
= form_for(@ipsum) do |f|
= f.label :title
= f.text_field :title
= f.label :words
= f.text_area :words, value: ''
= f.submit 'Submit'
答案 0 :(得分:0)
在您的模型中,您可以使用:
before_save :split_words
def split_words
self.words = words.split ','
end
从控制器中删除:
params[:ipsum][:words] = params[:ipsum][:words].split(',')