Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 铁路";有时有一个;关系_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails 铁路";有时有一个;关系

Ruby on rails 铁路";有时有一个;关系,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,这可能是一个新手问题,但我似乎想不出一个好的解决办法。我有一个company表,该表通过组拥有许多用户,这些用户也可以是公司的管理员(使他们能够编辑公司,但每个用户只能编辑一个公司) 在Rails中设置此功能的最佳方法是什么 我无法将admin字段添加到用户表中,因为它不会区分他/她所管理的公司。但是如果我做一个company\u id字段,Rails中的关系会是什么样的(因为这是一种sometimes\u有一个relationship!)。我可以不谈恋爱就离开,但这似乎不合适 提前感谢您的帮助

这可能是一个新手问题,但我似乎想不出一个好的解决办法。我有一个
company
表,该表通过组
拥有许多用户,这些用户也可以是公司的管理员(使他们能够编辑公司,但每个用户只能编辑一个公司)

在Rails中设置此功能的最佳方法是什么

我无法将
admin
字段添加到用户表中,因为它不会区分他/她所管理的公司。但是如果我做一个
company\u id
字段,Rails中的关系会是什么样的(因为这是一种
sometimes\u有一个
relationship!)。我可以不谈恋爱就离开,但这似乎不合适


提前感谢您的帮助

据我所知,您有一个可能属于某个公司的用户,如果它属于某个公司,它可能会实际管理它

您可以设置
,例如,
公司id
用户id
管理员
字段(这样您可以知道哪些用户属于哪个公司,以及他们是否也管理该公司)

对于只属于一个公司的用户,可以为每两列添加唯一性验证(
company\u id
user\u id

你可以通过这样做获得一家公司的管理员

class Company < ActiveRecord::Base
  has_many :groups
  has_many :users, through: :groups
  has_many :administrators, through: :groups, source: :user, conditions: ["groups.admin = ?", true]
end
因此,您可以调用
user.company
user.administrated\u company


依此类推……

据我所知,您有一个用户可能属于某家公司,如果它属于某家公司,它可能会实际管理它

您可以设置
,例如,
公司id
用户id
管理员
字段(这样您可以知道哪些用户属于哪个公司,以及他们是否也管理该公司)

对于只属于一个公司的用户,可以为每两列添加唯一性验证(
company\u id
user\u id

你可以通过这样做获得一家公司的管理员

class Company < ActiveRecord::Base
  has_many :groups
  has_many :users, through: :groups
  has_many :administrators, through: :groups, source: :user, conditions: ["groups.admin = ?", true]
end
因此,您可以调用
user.company
user.administrated\u company


等等……

每个公司都有一个管理员用户吗?是的,每个公司都有一个管理员用户,但它也有几个普通用户。那么,有没有一种方法可以实现“has_one where”类型的关系呢?在这种情况下,为什么不在companys表中放置一个AdminUserId字段,描述哪个用户是该公司的管理员?(我只是在学习rails,所以我不确定magic rails的语法是什么)问题是我不知道如何将它与rails连接起来。我知道公司表中可能有一个
有一个用户,但用户表中会有什么相反的情况(例如,我可以查找属于某个公司的用户,但不能使用“属于”,因为不是所有用户都属于一个,只有管理员用户)。您实际上可以在此处使用
所属
——它是
所属
的适当对应项。使用该关联进行编码时要小心,因为返回值可能是
nil
。干杯每个公司都有一个管理员用户吗?是的,每个公司都有一个管理员用户,但它也有几个普通用户。那么,有没有一种方法可以实现“has_one where”类型的关系呢?在这种情况下,为什么不在companys表中放置一个AdminUserId字段,描述哪个用户是该公司的管理员?(我只是在学习rails,所以我不确定magic rails的语法是什么)问题是我不知道如何将它与rails连接起来。我知道公司表中可能有一个
有一个用户,但用户表中会有什么相反的情况(例如,我可以查找属于某个公司的用户,但不能使用“属于”,因为不是所有用户都属于一个,只有管理员用户)。您实际上可以在此处使用
所属
——它是
所属
的适当对应项。使用该关联进行编码时要小心,因为返回值可能是
nil
。干杯太好了,谢谢!不知道
源代码
以及在多通关系中使用
条件
的能力!我只有一个问题。在尝试创建新公司时,我遇到了一个奇怪的SQL错误,它说:
SQLite3::SQLException:没有这样的列:users.group\u id:从“users”内部的“users”中选择1并在“users”上加入“groups”。“group\u id”=“groups”。“id”其中的“groups”。“company\u id”为空且“users”。“id”=1且(groups.admin=“t”)限制为1
。你知道为什么这是偶然抛出的吗?哦,没关系,这是因为我在使用CanCan,它在寻找一些不存在的东西!太好了,谢谢!不知道
源代码
以及在多通关系中使用
条件
的能力!我只有一个问题。在尝试创建新公司时,我遇到了一个奇怪的SQL错误,它说:
SQLite3::SQLException:没有这样的列:users.group\u id:从“users”内部的“users”中选择1并在“users”上加入“groups”。“group\u id”=“groups”。“id”其中的“groups”。“company\u id”为空且“users”。“id”=1且(groups.admin=“t”)限制为1
。你知道为什么这是偶然抛出的吗?哦,没关系,这是因为我在使用CanCan,它在寻找一些不存在的东西!