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

用@user 替换 self 就可以了。

理想情况下,您应该这样做。

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

如果您的关联设置正确,Rails 将在内部处理分配。

在你的情况下它会。

我从 Rails 指南中获取了这些片段。

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

这是网址

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

于 2013-02-22T06:51:45.067 回答