我正在構建一個具有User
和Product
類的RoR應用程序。一個用戶很多照片都可能是一個產品,但每個用戶也必須有一個profile_picture
。Rails針對可能映射到不同模型類型的模型的活動記錄關聯
用戶:
class User < ActiveRecord::Base
has_many :pictures
end
產品:
class Product < ActiveRecord::Base
has_many :pictures
end
我掙扎定義pictures
模型是目前:
class Picture < ActiveRecord::Base
has_one :user
has_one :product
end
留念的架構如下(時間戳爲簡潔起見):
create_table "pictures", force: true do |t|
t.string "image_url"
end
最後我不得不遷移到一個鏈接,資料圖片添加到用戶和產品
class AddPicturesToUsersAndWalks < ActiveRecord::Migration
def change
add_column :users, :profile_picture, :picture
add_column :products, :profile_picture, :picture
end
end
我已經通過http://guides.rubyonrails.org/association_basics.html和http://guides.rubyonrails.org/migrations.html看我不明白這些關係應該如何形成或數據庫中的外鍵應該存儲在哪裏。
我無法查看用戶或產品表的架構(rake db:migrate
在運行時沒有抱怨),因爲在架構文件中返回了以下錯誤(我認爲這與在profile_picture
中都有關係,但我不確定如何進行:
# Could not dump table "users" because of following NoMethodError
# undefined method `[]' for nil:NilClass
請使用在軌道上4紅寶石和sqlite3的數據庫注意IM
謝謝,有沒有辦法鏈接配置文件圖片,所以我可以訪問它@ user.profile_picture呢? – user3576112 2014-08-31 18:43:28
@ user3576112看起來像'has_one:profile_picture,class_name:「Picture」,如::imageable'。相似的東西。 – 2014-08-31 19:45:32
謝謝,這將被保存爲用戶表中的引用還是隻是一個picture_id? – user3576112 2014-08-31 19:53:04