1

このrakeコマンドを実行しようとしたときはいつでも:

@user = User.find("1")
@contest = Contest.find("1")
@user.votes.create(:user => self, :contest => @contest)

次のエラーが表示されます。

User(#70104671283680) expected, got Object(#70104612331400)

これは私のUser.rbです

has_many :votes
accepts_nested_attributes_for :votes
attr_accessible :votes_attributes

これは私のコンテストです.rb

has_many :votes

そして、これらは私の移行です:

change_table :users do |t|
  t.references :votes
end

change_table :contests do |t|
  t.references :votes
  t.references :contest_items
end

change_table :votes do |t|
  t.belongs_to :users
  t.belongs_to :contests
end

投票を間違って設定していますか?

4

2 に答える 2

2

selfたとえば、ユーザーに置き換え@userます。

于 2013-02-22T05:13:00.907 に答える
1

self を @user に置き換えると、うまくいきます。

理想的には、これを行う必要があります。

@user.votes.create(:contest => @contest)

関連付けが適切に設定されていれば、Rails が内部的に割り当てを処理します。

あなたの場合はそうでしょう。

このスニペットはレール ガイドから取得しました。

@order = @customer.orders.create(:order_date => Time.now)

これはURLです

http://guides.rubyonrails.org/association_basics.html

于 2013-02-22T06:51:45.067 に答える