我有一个问题,希望有人可以向我解释。示例关系:
class User < ActiveRecord::Base
has_many :issues
has_many :tasks, through: :issues
end
class Issue < ActiveRecord::Base
belongs_to :user
belongs_to :task
end
class Task < ActiveRecord::Base
has_many :issues
has_many :users, through: :issues
end
我将尝试通过关联创建一些模型:
user = User.create
task = user.tasks.new
user.tasks # [#<Task id: nil, created_at: nil, updated_at: nil>]
task.users # []
问题1.这是打算单向关联还是我做错了什么?
user.tasks.new.save
SQL (0.3ms) INSERT INTO "tasks" ("created_at", "updated_at") ...
user.tasks.create
SQL (0.4ms) INSERT INTO "tasks" ("created_at", "updated_at") ..
SQL (0.4ms) INSERT INTO "issues" ("created_at", "task_id", "updated_at", "user_id") ...
问题2:为什么只有create方法为连接表添加记录?
提前致谢。
答案 0 :(得分:0)
您正在创建用户和任务之间的多对多关联。为了有一种方式关联,你需要写
class User < ActiveRecord::Base
has_many :tasks
end
class Task < ActiveRecord::Base
belongs_to :user
end
这将在用户和任务之间创建一对多的关联。
并且
创建Active Record的方法更新数据库,但新方法只创建模型对象,如日志所示。
你需要在新的
之后调用savetask = user.tasks.new
user.save
这实际上会将用户与任务一起保存
此链接将向您解释有关关联的更多信息