使用Ruby 2.0和Rails 4.0.2,我有两个表。其中一个表在第二个表的_form视图中填充选择列表集合。我需要从选择列表中获取用户选择的结果,并在另一个表字段中输入该名称值,而不是选择的ID,而是实际的单词。我想在没有连接表的情况下执行此操作。
我一直在用书籍和作者尝试一些短裙,并观看Ryan Bate的视频短裙,但没有人详细解释如何解决上述问题。我很困惑。如果我能理解这个过程,我可以在应用程序中重新创建它。
Author
has_many :books
accepts_nested_attributes_for :books, :reject_if => lambda { |a| a[:bookname].blank? }, :allow_destroy => true
Book
belongs_to :author
Books控制器示例:def new @ book = book . new @ author = author . find(params[:author _ id])@ book = @ author . books . build
def create
@author = Author.find(params[:author_id])
Book _form.html.erb
<div class="tryit">
<%= f.collection_select(:author, :author_id, @authors; :id, :name) %>
</p>
</div>
从这里开始我就被困住了。不明白如何将作者姓名放入Book表的author name字段。我不想使用连接表,只需用正确的数据填充book表。
有人能给我建议吗谢谢
你不需要作者的名字
ActiveRecords Associations的目的是为关系数据库交互提供一个框架。基本上,这些表使用一个primary_key
(唯一标识符——典型的id
)和一个foreign_key
(另一个表中的主键
)
因为Rails是关系型和面向对象的,所以它允许您这样做:
@book.author.name
外键
当您像现在这样使用ActiveRecord时,它会像这样填充您的表:
authors
id | name | etc | etc | created_at | updated_at
books
id | author_id | title | ISBN | etc | created_at | updated_at
这意味着,在从属书籍
表格中填充的数据比作者
foreign_key
的数据多。这将允许 Rails 在您调用书籍
对象时调用所有作者
属性
代表
解决这个问题的一种方法(如果您想直接从< code>book对象< code >中访问所有作者信息)是使用[delegate`]3方法:
#app/models/book.rb
Class Book < ActiveRecord::Base
belongs_to :author
delegate :name, to: :author, prefix: true
end
这将允许您调用@book.author_name
当我试图将从表t_comment_photo查询的userPhoto映射到java类ToyComment中的列表元素时,我得到了错误。 我试图修复的resultMap是: 我尝试了和,但都不起作用。 怎么把它修好?
问题内容: 表格如下: 我想获取班级列表,以及每个班级-属于每个班级的学生人数。我怎样才能做到这一点? 问题答案: 您需要这样做-
问题内容: 我有2张桌子,一张用于会员,另一张用于他们的服务。这些是MySQL 5.6服务器上的InnoDB表。 会员表: 服务表: 我尝试达到以下结果: 因此,如果服务表中存在用户ID,则列服务将为true或false。 我尝试使用JOIN和子查询来完成此操作,但没有成功,因此我需要您的帮助;) 问题答案: 使用服务表,请尝试此查询
我想在选择另一个select元素的一个选项时显示一个select元素,在选择另一个选项时隐藏它。 这是JavaScript: 感谢任何帮助。谢谢
问题内容: 我有2个表,一个包含我需要的最终结果,另一个包含我需要根据设定级别选择的列列表。 例如 : 所以,如果我做以下 然后,基本上我需要使用此select语句中的列名来确定从另一条语句中选择了哪些列。 香港专业教育学院尝试过的方法,我当然知道这是错的,但可以让我对我试图做的事情有所了解。 我试图以一种动态方式构建一个sql查询,该查询可以通过我放在表中的任何列进行更改。 从理论上讲,这应与以
问题内容: 我寻求帮助的以下问题:我有两个表 列,, 列,,, 我想将数据从(仅列)复制到(到列)。该均在表中相同(有重复项的ID),所以这就是我要复制到新表,并保持在一个单一的行中的所有数量与每个位置为一列的原因。我正在使用以下查询,但它不起作用 问题答案: 如果为空,请尝试以下插入语句: 如果已经包含值,请尝试以下更新语句: