ActiveModel 关联和 rails 控制台
ActiveModel association and rails console
所以我创建了两个模型:
rails g scaffold user name email
和
rails g scaffold rental_unit address rooms:integer bathrooms:integer price_cents:integer
并定义关联如下:
class RentalUnit < ActiveRecord::Base
belongs_to :user
end
现在,我想使用 rails 控制台进行如下数据处理:
> user = User.new
> user.name = "John Doe"
> user.email = "test@example.com"
> user.save!
> unit = RentalUnit.new
> unit.address = "abc street"
> unit.rooms = 4
> unit.bathrooms = 2
但我无法使用以下方法关联以上记录:
unit.user = user
如何在 rails 控制台中执行此操作?
使用生成器定义这种关系的更好方法是什么?
您需要建立如下关联:
在 rental_units
table
中添加 user_id
作为整数列
在您的 User
模型中添加 has_many :rental_units
然后你可以使用unit.user = user
建立关系
更新:
要在数据库中添加列,您需要在 /db/migrate 中添加一个文件,例如:
class AddUserIdToRentalUnits < ActiveRecord::Migration
def change
add_column :rental_units, :user_id, :integer
end
end
和运行 rake db:migrate
在控制台
你需要
添加对rental_unit的引用:使用rails命令生成迁移
rails g migration AddUserToRentalUnits user:references
或手动创建迁移
class AddUserToRentalUnits < ActiveRecord::Migration
def change
add_reference :rental_units, :user, index: true
end
end
rake db:migrate
2。在用户模型中添加关联
class User < ActiveRecord::Base
has_many :rental_units
end
然后在console中测试,应该可以关联了
希望对您有所帮助!
所以我创建了两个模型:
rails g scaffold user name email
和
rails g scaffold rental_unit address rooms:integer bathrooms:integer price_cents:integer
并定义关联如下:
class RentalUnit < ActiveRecord::Base
belongs_to :user
end
现在,我想使用 rails 控制台进行如下数据处理:
> user = User.new
> user.name = "John Doe"
> user.email = "test@example.com"
> user.save!
> unit = RentalUnit.new
> unit.address = "abc street"
> unit.rooms = 4
> unit.bathrooms = 2
但我无法使用以下方法关联以上记录:
unit.user = user
如何在 rails 控制台中执行此操作? 使用生成器定义这种关系的更好方法是什么?
您需要建立如下关联:
在
rental_units
table 中添加 在您的
User
模型中添加has_many :rental_units
user_id
作为整数列
然后你可以使用unit.user = user
建立关系
更新:
要在数据库中添加列,您需要在 /db/migrate 中添加一个文件,例如:
class AddUserIdToRentalUnits < ActiveRecord::Migration
def change
add_column :rental_units, :user_id, :integer
end
end
和运行 rake db:migrate
在控制台
你需要
添加对rental_unit的引用:使用rails命令生成迁移
rails g migration AddUserToRentalUnits user:references
或手动创建迁移
class AddUserToRentalUnits < ActiveRecord::Migration
def change
add_reference :rental_units, :user, index: true
end
end
rake db:migrate
2。在用户模型中添加关联
class User < ActiveRecord::Base
has_many :rental_units
end
然后在console中测试,应该可以关联了
希望对您有所帮助!