Rails - 模型belongs_to和has_one相同的类

时间:2016-09-19 05:11:32

标签: ruby-on-rails ruby ruby-on-rails-4 rails-activerecord

我有两个模型,用户和请求

根据定义,用户可以有多个请求,每个请求都有一个指定的代理(可以是不同的用户)

以基数为,

0

但是在Request模型中有一列,agent_id必须链接到User。 那么如何将关系设置为最佳方式,

class User < ActiveRecord::Base
   has_many :requests
end

这两个都在请求表

4 个答案:

答案 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