我尝试创建此
用户是one to many
和IncomePicture
的{{1}},而ExpensePicture和IncomePicture与ExpensePicture
和IncomeText
具有一对一的关系。这就是我到目前为止所拥有的。我对迁移实际上做了什么有点困惑?我的猜测是它更新了数据库中的表。我觉得我在迁移中遗失了很多,以便在我的数据库中创建所需的方案。我认为我的模型还可以,但我不太确定。我对ExpenseText
命令感到困惑。似乎该命令更新或更改表列
型号:
rails g migration ...
移植
class User < ActiveRecord::Base
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:rememberable, :validatable
has_many :expense_pictures
has_many :income_pictures
end
class IncomePicture < ActiveRecord::Base
belongs_to :user
mount_uploader :image, ImageUploader
has_one :income_text
end
class IncomeText < ActiveRecord::Base
belongs_to :income_pictures
end
class ExpensePicture < ActiveRecord::Base
belongs_to :user
mount_uploader :image, ImageUploader
has_one :expense_text
end
class ExpenseText < ActiveRecord::Base
belongs_to :expense_pictures
end
答案 0 :(得分:1)
您需要通过迁移添加的唯一内容是外键。 Rails将负责协会,因此它将在那之后全部工作。
class AddForeignKeysToTables < ActiveRecord::Migration
def change
add_column :income_pictures, :user_id, :integer
add_column :expense_pictures, :user_id, :integer
add_column :expense_texts, :expense_picture_id, :integer
add_column :income_texts, :income_picture_id, :integer
end
end
你也可以这样做......
add_reference:products,:user,index:true
class AddForeignKeysToTables < ActiveRecord::Migration
def change
add_reference :income_pictures, :user
add_reference :expense_pictures, :user
add_reference :expense_texts, :expense_picture
add_reference :income_texts, :income_picture
end
end
实际上你可以为外键添加一个索引......
add_reference :income_pictures, :user, index: true