表关系参考Ruby on Rails

时间:2013-08-15 18:00:27

标签: ruby-on-rails

我目前正在开发一个网络应用程序,承包商(电工,屋顶工,管道工)等可以在线提出建议。将从客户处向承包商提供图片,项目的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?

如果我没有说清楚,请告诉我,我对表关系并不熟悉,哪种关系对我有帮助。

2 个答案:

答案 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。