rails小重构:将图片加入产品Model
2024-09-25 18:45:18
原先的产品product模式中存放的是图片的url,必须手动将图片存入指定目录中.现在略作改动,在数据库中新建一个pictures表,其设定如下:
class CreatePictures < ActiveRecord::Migration
def change
create_table :pictures do |t|
t.integer :product_id
t.string :name
t.string :comment
t.string :content_type
t.binary :data,limit:1.megabyte
t.timestamps null: false
end
end
end
同时配置picture和product的关系,让product has_one picture,让picture belongs_to product.然后修改product以前的image_url的验证模式:
1.删除其必须存在的验证
2.在其Regexp的验证中加入allow_blank:true
在product中加入after_save钩子和pic_tmp虚拟属性:
attr_accessor :pic_tmp
after_save :link_picture
def link_picture
if pic_tmp
pic = Picture.new
pic.uploaded_picture(pic_tmp)
self.picture = pic
end
end
以便在product保存中同时更新picture中与product对应的关系.
最后修改视图中的界面:
<%= form_for(@product,html:{multipart:true}) do |f| %>
<div class="field">
<%= f.label :title %><br>
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :description %><br>
<%= f.text_area :description,rows:6 %>
</div>
<div class="field">
<%= f.label :image_url %><br>
<% if @in_new %>
<%= f.file_field("pic_tmp") %>
<% else %>
<% if @product.picture %>
<%= f.file_field("pic_tmp") %>
<% else %>
<%= f.text_field :image_url %>
<% end %>
<% end %>
</div>
最新文章
- 一些值得练习的github项目
- linux快速删除海量文件
- 破解Java to C# Converter
- iOS多线程同步锁
- Java笔记--泛型总结与详解
- GCD创建一个单例
- hdu 5475 An easy problem(暴力 || 线段树区间单点更新)
- 【阿里云产品公测】PTS测试 SLB+ECS+RDS组合的DZ论坛负载极限压力,100并发2000页
- 你不需要jQuery(四)
- 在Linux下安装C/C++开发工具包的最佳方式
- WWDC2014之App Extensions学习笔记
- BZOJ 1637: [Usaco2007 Mar]Balanced Lineup( sort + 前缀和 )
- MVC Controller向View传值(ViewData与ViewBag)
- DDD实践案例:引入事件驱动与中间件机制来实现后台管理功能
- 让AutoMapper在你的项目里飞一会儿(转)
- poj1011 搜索+剪枝
- electron-vue 初体验
- 盒子模型/div标签/益出处理
- 全排列-hdu1027
- 安装 Xshell 5/6 时出现.dll以及0xc000007错误的解决
热门文章
- Java基础---Java---网络编程---TCP的传输、客户端和服务端的互访、建立一个文本转换器、编写一个聊天程序
- open_links_per_instance 和 open_links 参数说明
- SQL join 语句 画图果然更容易理解
- USB OTG原理+ ID 检测原理
- Uva - 1594 - Ducci Sequence
- 最近很多人问我:saiku下载不下来
- Html标签中thead、tbody、tfoot的作用
- ViewPager 实现 Galler 效果, 中间大图显示,两边小图展示(优化篇)
- html详解(三)
- Chipmunk碰撞形状:cpShape