【发布时间】:2017-04-01 01:48:04
【问题描述】:
是否有可能在一个表上有以下两列并用 active_record 保存它们:
-
user_name_id(这是一个关联) -
user_name(纯文字)
演示尝试保存关联字段user_name_id 和文本字段user_name
以下是模型:
#app/models/blog.rb
class Blog < ApplicationRecord
belongs_to :user_name
end
#app/models/user_name.rb
class UserName < ApplicationRecord
has_many :blogs
end
形式:
<%= form_for(blog) do |f| %>
<% if blog.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(blog.errors.count, "error") %> prohibited this blog from being saved:</h2>
<ul>
<% blog.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :user_name %>
<%= f.text_field :user_name %>
</div>
<div class="field">
<%= f.label :user_name_id %>
<%= f.collection_select :user_name_id, UserName.all, :id, :name %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
强大的参数:
def blog_params
params.require(:blog).permit(:user_name, :user_name_id)
end
当我提交表单以创建新的blog 时,它会出错。参数哈希看起来不错:
“blog”=>{“user_name_id"=>"1", “user_name"=>”foo”}
但是我收到以下错误:
ActiveRecord::AssociationType 不匹配 预期用户名(#70119900697480),得到字符串(#70119800086640)
更新:我理解,理想情况下:这些属性之一的列名应该改变。尽管如此:是否有可能使用 rails 来做到这一点?需要什么?
【问题讨论】:
-
显示博客的两个模型和控制器
-
博客是否属于一个名为 user_name 或 user 的表?
-
属于一个名为 user_names 的实际表
-
我同意盖茨 - 发布所有信息,并包括表格
-
现在添加信息
标签: ruby-on-rails ruby activerecord