2012-01-05 25 views
1

クラスUserBenefitの間のHABTM関係を作成しようとしています。問題は、ユーザーとメリットが相互に複数の関係を持っていることです。そのため、この関係に固有の名前、FavoriteBenefitizationを付けようとしています。私が使用したコードここカスタム関係名とのHABTM関係

ActiveRecord::StatementInvalid: Mysql2::Error: Unknown column 'favorite_benefitizations.user_id' in 'where clause': SELECT `benefits`.* FROM `benefits` INNER JOIN `favorite_benefitizations` ON `benefits`.`id` = `favorite_benefitizations`.`favorite_benefit_id` WHERE `favorite_benefitizations`.`user_id` = 6088 

されています:私はUser.last.favorite_benefitsを行う際

は、残念ながら、私は、エラーメッセージが出続ける

class FavoriteBenefitization < ActiveRecord::Base 

    belongs_to :favorited_user, :class_name => 'User' 
    belongs_to :favorite_benefit, :class_name => 'Benefit' 

    validates :favorited_user, :favorite_benefit, :presence => true 
end 

class User < ActiveRecord::Base 
    has_many :favorite_benefitizations, 
    :dependent => :destroy 

    has_many :favorite_benefits, 
    :through => :favorite_benefitizations 
end 

class Beneift < ActiveRecord::Base 
    has_many :favorite_benefitizations, 
    :dependent => :destroy 

    has_many :favorited_users, 
    :through => :favorite_benefitizations 
end 

これはRailsのを実行しているアプリケーションのためであるが、3.1

どれでも助けが素晴らしいだろう。ありがとうございました!

答えて

1

ここでは、FavoriteBenefitizationは結合テーブルであるため、user_idとbenefit_idを列名として使用する必要があります。あなたは、たとえばなど、

を外部キーとクラスを識別することにより、団体、スコープ、または新しいものを作成するの名前を変更するような派手なことを行うことができ、あなたの他のモデルでは、私は私のメッセージモデルでこれを持っている:has_one :recipient, :foreign_key => "id", :primary_key => "receiver_id", :class_name => "User"

しかし、Railsの結合表の列が期待通りのものになることが期待されます。

編集:Railsはあなたが使用しているためこれを期待しています:throughはjoinテーブルを識別します。