然而,这个测试通过;我显然可以将文件附加到Group的父类," Principal":
def test_attach_a_file_to_a_group
set_tmp_attachments_directory
group = Group.find_by_lastname!('B Team')
a = Attachment.new(:container => group,
:file => uploaded_test_file("japanese-utf-8.txt", "text/plain"),
:author => User.find(1))
assert a.save!
assert_equal 'japanese-utf-8.txt', a.filename
assert_equal 'Principal', a.container_type
end
那么我从哪里开始呢?我的插件应该重新实现" groups / _form.html.erb"文件并添加显示"选择文件的部分"按钮?或者我应该首先将某些内容修补到组中,以便准备好使用它可能不知道附加到它的文件吗?
我会在这里报告我发现的......
答案 0 :(得分:0)
我似乎无法做到。我将在这里记录我到底有多远。
首先,我将此行添加到测试中:
assert_equal 1, group.attachments.count
这迫使我修补群组并添加acts_as_attachable
。补丁的核心是:
def self.included(base)
base.class_eval do
acts_as_attachable
end
end
下一步是将app/views/groups/_form.html.erb
复制到我的插件的app
文件夹中,然后添加显示和添加新附件的行:
<% extend AttachmentsHelper %>
<%= link_to_attachments @group, :thumbnails => true %>
<p><%=l(:label_attachment_plural)%><br /><%= render partial: 'attachments/form', locals: { container: @group } %></p>
这要求我修改GroupsController,将别名update
修改为update_with_attachments
,然后添加保存附件的行:
@group.save_attachments params[:attachments]
最后,因为acts_as_attachable
假设您有一个项目,我必须向我的小组添加def project; nil; end
。
这就是我所能做的一切。当我手动测试时,我得到了一条记录,该记录响应了带有404的查找URI。https://our.domain.com/attachments/thumbnail/6053?size=96
。我在每个Rails.logger.warn
上面放了一个render_404
行和我能找到的相似,我从来没有弄清楚哪一个正在渲染404.AttamentsController正确地找到了附件,但这就是我能做到的追踪发生了什么。
所以现在我要退出所有这些新代码,并选择一个系统,我的代码需要一个Group才能拥有一个图像,只需通过查找与该组相关的项目中的附件即可找到一个。