首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >带有静态散列的Rails多选择--如何将值保存到数据库中

带有静态散列的Rails多选择--如何将值保存到数据库中
EN

Stack Overflow用户
提问于 2016-01-08 03:20:10
回答 1查看 223关注 0票数 0

在Rails 4中,我有以下结构:

用户模型

代码语言:javascript
复制
has_many :user_languages

User_language模型

代码语言:javascript
复制
belongs_to :user

在我的用户视图中,我有以下内容:

代码语言:javascript
复制
<%= form_for @user do |f| %>
 <%=f.select("user_languages", languages, {selected: "EN"}, {:multiple => true} )%>
<% end %>

我希望用户选择他/她说得流利的语言,并将它们保存在数据库中的user_language表中。对于每种语言,我们将向此表中添加一行。

知道语言是静态的散列/数组,而不是数据库中的表,我如何将这些值保存到数据库中?此方法根本不起作用,即使在控制器中白名单之后,也不会在db中保存任何内容。

EN

回答 1

Stack Overflow用户

发布于 2016-01-08 03:29:08

您可以在列上使用rails 串行化

代码语言:javascript
复制
serialize :languages, Hash 

顺便说一句,你从哪里向用户展示这些语言作为下拉列表?我是说你从哪里取下的东西?您是否将languages存储在应用程序中的任何全局变量中?

我有更好的解决办法。您可以为languages创建一个新表。正如您已经提到的,用户可以使用多种语言,因此新的关联可以是:

代码语言:javascript
复制
class User 
   has_and_belongs_to_many :languages 
end
class Language 
   has_and_belongs_to_many :users 
end

它可以解决你的问题,而且它也非常整洁。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34668971

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档