在Rails 4中,我有以下结构:
用户模型
has_many :user_languagesUser_language模型
belongs_to :user在我的用户视图中,我有以下内容:
<%= form_for @user do |f| %>
<%=f.select("user_languages", languages, {selected: "EN"}, {:multiple => true} )%>
<% end %>我希望用户选择他/她说得流利的语言,并将它们保存在数据库中的user_language表中。对于每种语言,我们将向此表中添加一行。
知道语言是静态的散列/数组,而不是数据库中的表,我如何将这些值保存到数据库中?此方法根本不起作用,即使在控制器中白名单之后,也不会在db中保存任何内容。
发布于 2016-01-08 03:29:08
您可以在列上使用rails 串行化:
serialize :languages, Hash 顺便说一句,你从哪里向用户展示这些语言作为下拉列表?我是说你从哪里取下的东西?您是否将languages存储在应用程序中的任何全局变量中?
我有更好的解决办法。您可以为languages创建一个新表。正如您已经提到的,用户可以使用多种语言,因此新的关联可以是:
class User
has_and_belongs_to_many :languages
end
class Language
has_and_belongs_to_many :users
end它可以解决你的问题,而且它也非常整洁。
https://stackoverflow.com/questions/34668971
复制相似问题