Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.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 Rails在中找不到反向关联,因为它有很多关系_Ruby_Ruby On Rails 4_One To Many_Has Many - Fatal编程技术网

Ruby Rails在中找不到反向关联,因为它有很多关系

Ruby Rails在中找不到反向关联,因为它有很多关系,ruby,ruby-on-rails-4,one-to-many,has-many,Ruby,Ruby On Rails 4,One To Many,Has Many,我在rails 5中有两个模型(它们之间的一对多关系), 一个是ScholarshipGroup和scholarshipModel,带有Admin名称空间 学者组模型: class Admin::ScholarshipGroup < ApplicationRecord has_many :admin_scholarships, :class_name => 'Admin::Scholarship',inverse_of: :admin_scholarship_grou

我在rails 5中有两个模型(它们之间的一对多关系), 一个是ScholarshipGroup和scholarshipModel,带有Admin名称空间

学者组模型:

class Admin::ScholarshipGroup < ApplicationRecord    
  has_many :admin_scholarships, :class_name =>   'Admin::Scholarship',inverse_of: :admin_scholarship_group
end
但它给了我一个错误:

Admin::ScholarshipGroup Load (0.3ms)  SELECT  "admin_scholarship_groups".* FROM "admin_scholarship_groups" ORDER BY "admin_scholarship_groups"."id" ASC LIMIT ?  [["LIMIT", 1]]
ActiveRecord::InverseOfAssociationNotFoundError: Could not find the inverse association for admin_scholarships (:admin_scholarship_group in Admin::Scholarship)
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activerecord-5.0.0.1/lib/active_record/reflection.rb:202:in `check_validity_of_inverse!'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activerecord-5.0.0.1/lib/active_record/reflection.rb:402:in `check_validity!'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activerecord-5.0.0.1/lib/active_record/associations/association.rb:25:in `initialize'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activerecord-5.0.0.1/lib/active_record/associations.rb:235:in `new'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activerecord-5.0.0.1/lib/active_record/associations.rb:235:in `association'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activerecord-5.0.0.1/lib/active_record/associations/builder/association.rb:111:in `admin_scholarships'
        from (irb):34
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/railties-5.0.0.1/lib/rails/commands/console.rb:65:in `start'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/railties-5.0.0.1/lib/rails/commands/console_helper.rb:9:in `start'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:78:in `console'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/railties-5.0.0.1/lib/rails/commands.rb:18:in `<top (required)>'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `require'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `block in require'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `require'
        from /home/ubuntu/workspace/bin/rails:9:in `<top (required)>'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `load'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `block in load'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `load'
        from /usr/local/rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/local/rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from -e:1:in `<main>'
Admin::奖学金团体加载(0.3ms)选择“奖学金团体管理员”。*从“奖学金团体管理员”顺序中按“奖学金团体管理员”。“id”ASC限制?[[“限制”,1]]
ActiveRecord::InverseOfAssociationNotFoundError:找不到管理员奖学金的反向关联(:admin::scholarship中的管理员奖学金组)
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/activerecord-5.0.0.1/lib/active\u record/reflection.rb:202:in'check\u validity\u of_inverse!'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/activerecord-5.0.0.1/lib/active\u record/reflection.rb:402:在“检查有效性”中
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/activerecord-5.0.0.1/lib/active\u record/associations/association.rb:25:in'initialize'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/activerecord-5.0.0.1/lib/active_record/associations.rb:235:in'new'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/activerecord-5.0.0.1/lib/active_record/associations.rb:235:in'association'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/activerecord-5.0.0.1/lib/active\u record/associations/builder/association.rb:111:in“admin\u奖学金”
来自(irb):34
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/railties-5.0.0.1/lib/rails/commands/console.rb:65:in'start'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/railties-5.0.0.1/lib/rails/commands/console\u helper.rb:9:in'start'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/railties-5.0.0.1/lib/rails/commands/commands\u tasks.rb:78:in'console'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/railties-5.0.0.1/lib/rails/commands/commands\u tasks.rb:49:in'run\u command!'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/railties-5.0.0.1/lib/rails/commands.rb:18:in`'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/activesupport-5.0.0.1/lib/active\u-support/dependencies.rb:293:in'require'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/activesupport-5.0.0.1/lib/active\u support/dependencies.rb:293:in'block in require'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/activesupport-5.0.0.1/lib/active\u-support/dependencies.rb:259:in'load\u-dependency'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/activesupport-5.0.0.1/lib/active\u-support/dependencies.rb:293:in'require'
from/home/ubuntu/workspace/bin/rails:9:in`'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/activesupport-5.0.0.1/lib/active\u-support/dependencies.rb:287:in'load'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/activesupport-5.0.0.1/lib/active\u support/dependencies.rb:287:in'block in load'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/activesupport-5.0.0.1/lib/active\u-support/dependencies.rb:259:in'load\u-dependency'
来自/usr/local/rvm/gems/ruby-2.3。1@college/gems/activesupport-5.0.0.1/lib/active\u-support/dependencies.rb:287:in'load'
from/usr/local/rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/rubygems/core\u ext/kernel\u require.rb:55:in'require'
from/usr/local/rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/rubygems/core\u ext/kernel\u require.rb:55:in'require'
from-e:1:in`'

为什么返回此类型错误?有人能给我建议这个错误的解决方案吗?

您在
Admin::Scholarship
模型中定义的
属于:group

您可以尝试:

has_many :admin_scholarships, :class_name => 'Admin::Scholarship',inverse_of: :group, foreign_key: 'group_id'

我已经做了更改,但现在它显示了这个错误:`Admin::ScholarshipGroup Load(0.5ms)选择“Admin\u scholarship\u groups”。*从“Admin\u scholarship\u groups”顺序中按“Admin\u scholarship\u groups”。“id”ASC LIMIT?[[“限制”,1]]管理员::奖学金加载(0.7ms)选择“管理员奖学金”。*从“管理员奖学金”中选择“管理员奖学金”。“奖学金组id”=?按“管理员奖学金”排序。“id”ASC限制?[[“奖学金组id”,1],“限制”,1]`此错误:ActiveRecord::StatementInvalid:SQLite3::SQLException:没有这样的列:admin\u scholarships.scholarship\u group\u id能否显示
schema.rb
文件?可能您使用了不同的外键名称。
create_table“admin_scholarship_groups”,force::cascade do | t | t.string“name”t.datetime“created_at”,null:false t.datetime“updated_at”,null:false end create_table“admin_scholarship”,force::cascade do | t | t.string“name”t.integer“折扣”t.string“condition”t.text“details”t.integer“group_id”t.datetime“created_at”,null:false t.datetime“updated_at”,null:false t.index[“group_id”],name:“index_admin_scholarships_on_group_id”end
@Engr.TanbirHasan我明白了,请检查我的更新答案。您需要在关联中添加
外键:“组id”
Admin::ScholarshipGroup Load (0.3ms)  SELECT  "admin_scholarship_groups".* FROM "admin_scholarship_groups" ORDER BY "admin_scholarship_groups"."id" ASC LIMIT ?  [["LIMIT", 1]]
ActiveRecord::InverseOfAssociationNotFoundError: Could not find the inverse association for admin_scholarships (:admin_scholarship_group in Admin::Scholarship)
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activerecord-5.0.0.1/lib/active_record/reflection.rb:202:in `check_validity_of_inverse!'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activerecord-5.0.0.1/lib/active_record/reflection.rb:402:in `check_validity!'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activerecord-5.0.0.1/lib/active_record/associations/association.rb:25:in `initialize'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activerecord-5.0.0.1/lib/active_record/associations.rb:235:in `new'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activerecord-5.0.0.1/lib/active_record/associations.rb:235:in `association'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activerecord-5.0.0.1/lib/active_record/associations/builder/association.rb:111:in `admin_scholarships'
        from (irb):34
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/railties-5.0.0.1/lib/rails/commands/console.rb:65:in `start'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/railties-5.0.0.1/lib/rails/commands/console_helper.rb:9:in `start'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:78:in `console'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/railties-5.0.0.1/lib/rails/commands.rb:18:in `<top (required)>'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `require'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `block in require'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `require'
        from /home/ubuntu/workspace/bin/rails:9:in `<top (required)>'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `load'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `block in load'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in `load_dependency'
        from /usr/local/rvm/gems/ruby-2.3.1@college/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:287:in `load'
        from /usr/local/rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /usr/local/rvm/rubies/ruby-2.3.1/lib/ruby/2.3.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from -e:1:in `<main>'
has_many :admin_scholarships, :class_name => 'Admin::Scholarship',inverse_of: :group, foreign_key: 'group_id'