【发布时间】:2014-10-25 00:59:40
【问题描述】:
我正在构建一个具有 User 和 Product 类的 RoR 应用程序。一个用户拥有许多照片,就像一个产品一样,但每个用户还必须有一个profile_picture。
用户:
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
请注意我在 rails 4 和 sqlite3 数据库上使用 ruby
【问题讨论】:
标签: ruby-on-rails ruby sqlite ruby-on-rails-4 rails-activerecord