我有两个模型,用户和请求
根据定义,用户可以有多个请求,每个请求都有一个指定的代理(可以是不同的用户)
以基数为,
0
但是在Request模型中有一列,agent_id必须链接到User。 那么如何将关系设置为最佳方式,
class User < ActiveRecord::Base
has_many :requests
end
这两个都在请求表
上答案 0 :(得分:2)
这可能就是你要找的东西。
class User < ActiveRecord::Base
has_many :requests
end
class Request < ActiveRecord::Base
belongs_to :user
belongs_to :agent, class_name: 'User', foreign_key: 'agent_id'
end
答案 1 :(得分:0)
您将使用关联的长格式版本。在源代码中查找它们以查看所有选项,但是对于此示例,只需要指定一个额外选项,因为其他所有选项都是默认选项。
对于用户
has_many :requests, foreign key: :agent_id
请求
has_one:user,foreign_key :: agent_id
答案 2 :(得分:0)
应该有效
class User < ActiveRecord::Base
has_many :requests
end
class Request < ActiveRecord::Base
belongs_to :agent, class_name: 'User'
end
如果您还想将用户与agent_id
:
class User < ActiveRecord::Base
has_many :requests, foreign_key: 'agent_id'
end
答案 3 :(得分:0)
建立关系的最佳方法是遵循Rails命名约定。 重命名列&#39; agent_id&#39;到&#39; user_id&#39;。
通过这样做,您可以使用
class User < ActiveRecord::Base
has_many :requests
end
class Request < ActiveRecord::Base
belongs_to :user
end