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,它在寻找一些不存在的东西!