Ruby on rails 当使用与模型中的外键的关系时,Rails中的SQLException

Ruby on rails 当使用与模型中的外键的关系时,Rails中的SQLException,ruby-on-rails,relationship,foreign-key-relationship,Ruby On Rails,Relationship,Foreign Key Relationship,@discover.claimer.name和@discover.induced.name工作罚款。 但是当我尝试的时候 class User has_many :disputes end class Dispute belongs_to :claimant, class_name: 'User', :foreign_key => :claimant_id belongs_to :indicted, class_name: 'User', :foreign_key

@discover.claimer.name和@discover.induced.name工作罚款。 但是当我尝试的时候

class User 
   has_many :disputes
end

class Dispute
    belongs_to :claimant, class_name: 'User', :foreign_key => :claimant_id
    belongs_to :indicted, class_name: 'User', :foreign_key => :indicted_id
end
我收到一个错误:SQLite3::SQLException:没有这样的列:Disferences.user_id:从Disferences中选择1作为一个,其中Disferences.user_id=?限制1 出了什么问题以及如何解决?
感谢您的帮助

您似乎在以下位置使用了无效语法:


您正在传递布尔值,但应传递带有SQL查询条件的哈希。

我认为更改关联将解决您的问题

@user.disputes.where(claimant_id: @user.id)
@user.disputes.where(indicted_id: @user.id)
现在在控制台中,尝试这样做

class User < ActiveRecord::Base
  has_many :claimant_disputes, class_name: 'Dispute', foreign_key: "claimant_id"
  has_many :indicted_disputes, class_name: 'Dispute', foreign_key: "indicted_id"
end

class Dispute < ActiveRecord::Base
  belongs_to :user
end

您是否尝试过此@user.disfers.whereclaimer_id=?,@user.idname错误。我认为问题在于:user_id,在我的模式文件create_table中,force:true do | t | t.integer post_id t.string reason t.datetime created_at t.datetime updated_at t.integer s s_disjust_category_id t.integer w_disjust_category_id t.integer索赔人_idt.integer起诉的_idend我在表中看不到:user_id,因此,当我尝试使用@user.disferences ActiveRecord之类的关系时,请参见:用户id在争端中,但我有:被起诉的id和:原告id而不是:用户id。设计错误?我已经发布了答案,请检查
class User < ActiveRecord::Base
  has_many :claimant_disputes, class_name: 'Dispute', foreign_key: "claimant_id"
  has_many :indicted_disputes, class_name: 'Dispute', foreign_key: "indicted_id"
end

class Dispute < ActiveRecord::Base
  belongs_to :user
end
2.1.0 :019 > u = User.first
  User Load (0.2ms)  SELECT  `users`.* FROM `users`  ORDER BY `users`.`id` ASC LIMIT 1
 => #<User id: 1, name: "a", created_at: "2015-05-28 10:48:05", updated_at: "2015-05-28 10:48:05"> 
2.1.0 :020 > u.claimant_disputes
  Dispute Load (0.5ms)  SELECT `disputes`.* FROM `disputes` WHERE `disputes`.`claimant_id` = 1
 => #<ActiveRecord::Associations::CollectionProxy [#<Dispute id: 1, name: "test", claimant_id: 1, indicted_id: nil, created_at: "2015-05-28 10:48:47", updated_at: "2015-05-28 10:48:47">]>

2.1.0 :025 > u = User.last
  User Load (0.3ms)  SELECT  `users`.* FROM `users`  ORDER BY `users`.`id` DESC LIMIT 1
 => #<User id: 2, name: "b", created_at: "2015-05-28 10:48:08", updated_at: "2015-05-28 10:48:08"> 
2.1.0 :026 > u.indicted_disputes
  Dispute Load (0.5ms)  SELECT `disputes`.* FROM `disputes` WHERE `disputes`.`indicted_id` = 2
 => #<ActiveRecord::Associations::CollectionProxy [#<Dispute id: 2, name: "test1", claimant_id: nil, indicted_id: 2, created_at: "2015-05-28 10:48:54", updated_at: "2015-05-28 10:58:59">]>