class User < ActiveRecord::Base
attr_accessible :email, :password, :picture, :username
has_many :entries, :class_name => "Entry", :inverse_of => :user
has_many :sent_messages, :inverse_of => :sender, :class_name => "Message", :foreign_key => "sender_id"
has_many :recieved_messages, :inverse_of => :target, :class_name => "Message", :foreign_key => "target_id"
has_many :mails, :inverse_of => :user
...
end
class Message < ActiveRecord::Base
attr_accessible :message, :seen, :title
belongs_to :sender, class_name => "User", :inverse_of => :sent_messages
belongs_to :target, class_name => "User", :inverse_of => :recieved_messages
end
class CreateMessages < ActiveRecord::Migration
def change
create_table :messages do |t|
t.references :sender
t.references :target
t.string :title
t.string :message
t.boolean :seen
t.timestamps
end
end
end
私はこの2つのモデルを持っています。ユーザーの送信メッセージ (user.sent_messages) を取得しようとすると、次のようなエラーが発生します。
Could not find the inverse association for sent_messages (:sender in Message)
Railsを使って2日目なので些細なことかもしれませんが、わかりません。
PS: クラス User から :inverse_of => :sender を削除すると、user.sent_messages は機能しますが、私が理解しているように :inverse_of は重要です。
PPS: エラーが見つかりました! Message クラスでは、:class_name の代わりに class_name を使用していました。