我目前正在开发一个网络应用程序,承包商(电工,屋顶工,管道工)等可以在线提出建议。将从客户处向承包商提供图片,项目的YouTube视频和文字说明。
到目前为止,我正在使用carrierwave
处理图片功能这是我的架构中的这个模型的表
create_table "project_pictures", force: true do |t|
t.string "name"
t.string "picture"
t.datetime "created_at"
t.datetime "updated_at"
end
以下是我的rails控制台中的两条记录
ProjectPicture Load (0.4ms) SELECT "project_pictures".* FROM "project_pictures"
=> #<ActiveRecord::Relation [#<ProjectPicture id: 2, name: "Request for Siding Quote Customer A", picture: "siding.jpg", created_at: "2013-08-15 16:10:22", updated_at: "2013-08-15 16:47:02">, #<ProjectPicture id: 1, name: "Request for Siding Quote Customer A", picture: "sidingrequest.jpg", created_at: "2013-08-14 01:54:27", updated_at: "2013-08-15 16:47:39">]>
问题是我试图将多张图片链接到一个客户。可以说上面的两张图片属于一个客户,有两行,因为有两张图片。
我如何在表中引用,假设我有一个客户,那就是我“judy” 两个记录都应该参考judy的id?
然后最终在视图中,我可以使用属于客户ID 1的图像标记绘制两张图片 - 名称=“judy”或者只是客户ID = 1?
如果我没有说清楚,请告诉我,我对表关系并不熟悉,哪种关系对我有帮助。
答案 0 :(得分:0)
create table :projects do |t|
t.references :clients
t.timestamps
end
create_table :pictures do |t|
t.string :name, null:false
t.string :location, null:false
t.references :projects, null:false
t.timestamps
end
...同时..回到模型层
class Project < ActiveRecord::Model
has_many :pictures, :dependent => destroy
end
class Picture < ActiveRecord::Model
belongs_to :project
validates_presence_of :project
end
获取所有Judy的照片
Client.where(“名字喜欢?”,“Judy”)。projects.first.pictures
答案 1 :(得分:0)
我会像这样设置它
用户has_many project_pictures
project_pictures belongs_to user
您的项目图片表应该有一行user_id。