RUBY ON RAILS 关联关系查询
RUBY ON RAILS QUERY FOR ASSOCIATION RELATION
class Persson
has_many : accounts
has_many : computers, through : :accounts
end
class Account
belongs_to : person
belongs_to : computer
scope :administrtor, -> { where(role : 'administrator') }
end
class Computer
has_many :accounts
has_many :person, though: :accounts
end
1.Find 此人(id: 39) 为管理员的所有计算机。
2.Find在一台以上的计算机中担任管理员的所有人。
3.Find 所有只有一个管理员的计算机。
嘿,请查看协会 rails 文档 doc
假设您正在按照问题的解决方案使用 PostgreSQL
1.
Person.includes(:accounts).find(1).computers.where("accounts.role =?", 'administrator')
2.
Person.where(id: Account.administrtor.group("accounts.person_id").having("count(accounts.person_id) > 1").pluck("accounts.person_id"))
3.
Computer.where(id: Account.administrtor.group("accounts.computer_id").having("count(accounts.computer_id) = 1").pluck("accounts.computer_id"))
class Persson
has_many : accounts
has_many : computers, through : :accounts
end
class Account
belongs_to : person
belongs_to : computer
scope :administrtor, -> { where(role : 'administrator') }
end
class Computer
has_many :accounts
has_many :person, though: :accounts
end
1.Find 此人(id: 39) 为管理员的所有计算机。
2.Find在一台以上的计算机中担任管理员的所有人。
3.Find 所有只有一个管理员的计算机。
嘿,请查看协会 rails 文档 doc 假设您正在按照问题的解决方案使用 PostgreSQL
1.
Person.includes(:accounts).find(1).computers.where("accounts.role =?", 'administrator')
2.
Person.where(id: Account.administrtor.group("accounts.person_id").having("count(accounts.person_id) > 1").pluck("accounts.person_id"))
3.
Computer.where(id: Account.administrtor.group("accounts.computer_id").having("count(accounts.computer_id) = 1").pluck("accounts.computer_id"))