在迁移中我做了:
add_column :users, :roles, :string, default: "member"
但我希望它能返回一个数组。举个例子,我可以运行这段代码:
def user_role_rules
return [] if @user.roles.nil?
@user.roles.each do |role|
exec_role_rules(role) if @user.roles.include?(role)
end
end
由于不了解@user
和其他方法,我们假设如果@user.roles
返回# => ["member"]
,则会运行此代码,但它会返回# => "member"
。这会导致每个错误消息:undefined method 'each' for "member":String
。有没有办法让@user.roles
返回数组而不是字符串?
答案 0 :(得分:2)
我认为你正在寻找这样的东西:
add_column :users, :roles, :string, array: true
答案 1 :(得分:1)
首先,您必须将列迁移到文本列而不是字符串列。
然后在模型中提出:
serialize :roles, Array