列出 rails 中另一个命名空间中存在的另一个模型中存在的所有关联模型记录 [英] List all associated model records present in another model present in another namespace in rails

查看:49
本文介绍了列出 rails 中另一个命名空间中存在的另一个模型中存在的所有关联模型记录的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我有两个模型,例如:

class Superadmin::Company < ApplicationRecord
  belongs_to :user
  has_many :garments
end

第二个

class Garment < ApplicationRecord
   belongs_to :company ,:class_name => "Superadmin::Company"
end

但是当我搜索时

company = Superadmin::Company.find(9)
company.garments

它给出错误:如

 Garment Load (1.3ms)  SELECT `garments`.* FROM `garments` WHERE `garments`.`company_id` = 9 ORDER BY created_at asc
ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'garments.company_id' in 'where clause': SELECT `garments`.* FROM `garments` WHERE `garments`.`company_id` = 9 ORDER BY created_at asc
    from /home/tukatech/rails_projects/live_tukagarments/.bundle/gems/activerecord-5.0.7.1/lib/active_record/connection_adapters/abstract_mysql_adapter.rb:218:in `query'

数据库中的表名如下:

1. garments
2. superadmin_companies

请提供是否有使用 Rails 外键关联关系进行搜索的正确方法.

please provide if there is a correct way to search using rails foreign key associations relation.

数据库如下:

mysql> desc superadmin_companies;
+-------------------+--------------+------+-----+---------+----------------+
| Field             | Type         | Null | Key | Default | Extra          |
+-------------------+--------------+------+-----+---------+----------------+
| id                | int(11)      | NO   | PRI | NULL    | auto_increment |
| name              | varchar(255) | YES  |     | NULL    |                |
| address           | varchar(255) | YES  |     | NULL    |                |
| phone             | varchar(255) | YES  |     | NULL    |                |
| user_id           | int(11)      | YES  | MUL | NULL    |                |
| created_at        | datetime     | NO   |     | NULL    |                |
| updated_at        | datetime     | NO   |     | NULL    |                |
| logo_file_name    | varchar(255) | YES  |     | NULL    |                |
| logo_content_type | varchar(255) | YES  |     | NULL    |                |
| logo_file_size    | int(11)      | YES  |     | NULL    |                |
| logo_updated_at   | datetime     | YES  |     | NULL    |                |
+-------------------+--------------+------+-----+---------+----------------+
11 rows in set (0.00 sec)

mysql> desc garments;
+--------------------------+--------------+------+-----+---------+----------------+
| Field                    | Type         | Null | Key | Default | Extra          |
+--------------------------+--------------+------+-----+---------+----------------+
| id                       | int(11)      | NO   | PRI | NULL    | auto_increment |
| xhtml_file_file_name     | varchar(255) | YES  |     | NULL    |                |
| xhtml_file_content_type  | varchar(255) | YES  |     | NULL    |                |
| xhtml_file_file_size     | int(11)      | YES  |     | NULL    |                |
| xhtml_file_updated_at    | datetime     | YES  |     | NULL    |                |
| xhtml_thumb_file_name    | varchar(255) | YES  |     | NULL    |                |
| xhtml_thumb_content_type | varchar(255) | YES  |     | NULL    |                |
| xhtml_thumb_file_size    | int(11)      | YES  |     | NULL    |                |
| xhtml_thumb_updated_at   | datetime     | YES  |     | NULL    |                |
| created_at               | datetime     | NO   |     | NULL    |                |
| updated_at               | datetime     | NO   |     | NULL    |                |
| category                 | varchar(255) | YES  |     | NULL    |                |
| garment_type             | varchar(255) | YES  |     | NULL    |                |
| user_id                  | int(11)      | YES  |     | NULL    |                |
| superadmin_company_id    | int(11)      | YES  | MUL | NULL    |                |
+--------------------------+--------------+------+-----+---------+----------------+
15 rows in set (0.00 sec)

推荐答案

根据帖子中提到的描述和其中一个答案中的评论,模型中定义的关系似乎无法与列名相关联.

As per the description mentioned in the post and the comments in one of the answers it seems like the relation defined in the models is unable to relate with the column names.

为使其正常工作,请更改为以下之一:

For it to work, please change to the one below:

class Superadmin::Company < ApplicationRecord
  belongs_to :user
  has_many :garments, class_name: "Garment", foreign_key: "superadmin_company_id"
end

现在它将开始映射关系中指定的外键.

Now it will start mapping the with the foreign_key specified in the relationship.

这篇关于列出 rails 中另一个命名空间中存在的另一个模型中存在的所有关联模型记录的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆